You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python统计整数偶数位数的递归函数返回值异常问题

递归统计偶数位数函数的问题排查与修复

你的函数每次返回1的核心原因是使用了普通除法 /——在Python中该操作会返回浮点数,而非整数。比如输入24,第一次递归调用evendigits(24/10)实际传入的是2.4,这个浮点数在后续递归中无法正确判断各位数字的奇偶性,最终导致统计结果错误。

修复后的代码

def evendigits(n):
    # 处理负数输入,取绝对值不影响位数奇偶判断
    n = abs(n)
    if n < 10:
        return 1 if n % 2 == 0 else 0
    # 用整数除法//替代普通除法/,确保递归传入整数
    if n % 2 == 0:
        return 1 + evendigits(n // 10)
    else:
        return evendigits(n // 10)

关键修复点

  • 替换n/10为n//10:整数除法会直接丢弃小数部分,保证每次递归处理的都是原数的高位整数,比如24//10得到2,而非2.4,这样后续的奇偶判断才能针对真实数字生效。
  • 新增n = abs(n):兼容负数输入场景,避免负浮点数干扰递归逻辑。

测试示例:

  • evendigits(1234) 返回2(数字2、4为偶数)
  • evendigits(2468) 返回4(所有位数均为偶数)

内容的提问来源于stack exchange,提问作者codedummy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 12:44:53