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

递归实现Spy Number函数:内部返回布尔值外部无法正常打印问题

递归实现Spy Number函数的返回值问题解决

你的问题出在递归分支没有返回递归调用的结果:当n != 0时,你调用了spynum(n//10,rem,sm,pd),但没有把这个调用的返回值传递回去。这就导致当前层级的函数执行完递归调用后,默认返回None——只有最底层基准条件(n==0)返回了正确的布尔值,但这个值没有被上层递归传递出来,所以外部打印函数返回值时拿到的是None,而非预期的结果。

修改后的代码

只需要在else分支的递归调用前加上return,让递归结果逐层向上传递即可:

def spynum(n, r, sm=0, pd=1):
    if n == 0:
        print(sm == pd)
        return sm == pd
    else:
        rem = n % 10
        sm += rem
        pd *= rem
        print(sm, pd, rem)
        return spynum(n//10, rem, sm, pd)  # 新增return,传递递归结果

num = 1124
print(spynum(num, num%10, 0, 1))

运行修改后的代码,内部的print和外部的print都会输出True(1124的数字和为1+1+2+4=8,乘积为112*4=8,符合Spy Number的定义)。

内容的提问来源于stack exchange,提问作者6 A.S.Harish Kumar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 05:15:21