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

Python递归函数missing_digits实现返回None,求问题排查

问题分析与代码修正

代码中的错误点

  • 外层函数未返回结果:miss_digits2函数定义了内部递归函数iter,但没有调用它并返回结果,这是直接导致返回None的核心原因。
  • 递归终止条件缺失:当n是个位数(即n < 10)时,没有相邻数字需要比较,此时应该返回0作为递归终止的基准值,原代码会陷入无限递归。
  • 条件判断逻辑错误:第一个if中的== 1 or 0写法不符合预期,等价于(n%10 - (n//10)%10 ==1) or 0,而0在布尔判断中为False,导致无法正确处理相邻数字相等(差为0)的情况。
  • 无效递归分支:最后一个return iter(n)会引发无限递归,而根据题目要求,输入的n是递增排列的数字,相邻数字的差不可能小于0,这个分支完全多余。

修正后的代码

def missing_digits(n):
    # 递归终止条件:个位数无相邻数字,缺失数为0
    if n < 10:
        return 0
    # 获取最后两位数字
    last = n % 10
    second_last = (n // 10) % 10
    diff = last - second_last
    # 计算当前两位的缺失数,加上剩余部分的缺失数
    if diff > 1:
        return (diff - 1) + missing_digits(n // 10)
    else:
        # 差为0或1时无缺失,递归处理剩余部分
        return missing_digits(n // 10)

测试验证

用题目给出的测试用例验证结果符合预期:

>>> missing_digits(1248) # 缺失3,5,6,7
4
>>> missing_digits(1122) # 无缺失数字
0
>>> missing_digits(123456) # 无缺失数字
0
>>> missing_digits(3558) # 缺失4,6,7
3
>>> missing_digits(35578) # 缺失4,6
2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 03:52:28