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

为何递归实现的连续8判断函数无返回值?与循环实现的差异

递归版与循环版函数的差异及递归无返回值原因分析

两者核心差异

  • 执行逻辑与返回路径:
    • 循环版(Function2):通过迭代逐位检查相邻数字,只要找到连续8就立刻返回True,遍历完所有可能还没找到就返回False,每一条执行分支都有明确的返回值。
    • 递归版(Function1):通过不断将数字除以10缩小处理规模,但只有当当前数字最后两位是88时才会返回True,其他递归分支没有传递返回结果,导致多数场景下函数没有有效返回值。

递归版无返回值的关键原因

递归函数的核心要求是把下层递归的结果传回上层调用,你的递归版应该是犯了这个常见错误:

# 错误的递归实现示例(和你的代码逻辑类似)
def Function1(n):
    if n < 10:
        print("数字不足两位")
    elif n % 100 == 88:
        return True
    else:
        Function1(n // 10)  # 这里没有return递归调用的结果!

举个例子:传入188时,第一次调用Function1(188)进入else分支,调用Function1(18);Function1(18)又进入else,调用Function1(1);Function1(1)执行完print后没有返回任何值,所以上层的Function1(18)也没有返回值,最终整个函数调用默认返回None,自然看不到预期的True/False。

只有当输入数字最后两位是88时,函数直接触发return True,这时候才有明确的返回结果。

修复后的递归版

要让递归版正常工作,只需要在递归调用时返回它的结果:

def Function1(n):
    if n < 10:
        return False
    if n % 100 == 88:
        return True
    return Function1(n // 10)  # 把递归结果传回上层

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 14:45:17