为什么Python中isFour函数调用返回None而非预期的True?
代码返回None的问题分析
核心问题如下:
- 递归调用未添加
return返回值:Python函数默认没有显式写return语句时会返回None,你在int>0分支中仅执行了递归调用,没有将递归的执行结果返回给上层调用,因此外层调用isFour(16)最终拿到的是默认返回的None。 - 递归调用的函数名拼写错误:你定义的函数名为
isFour,但代码中递归调用的是未定义的isPositive,实际运行时会直接抛出NameError,即便你是笔误写错了函数名,缺少return的问题依然会导致返回None。 - 除法逻辑与参数命名不规范:使用
/做除法会得到浮点数,虽然Python中4.0 == 4返回True,但使用//做整数除法更符合业务逻辑;同时不建议使用Python内置类型名int作为参数名,会覆盖内置类型导致后续使用异常。
修正后的代码
def isFour(num): if num == 4: return True if num > 0: return isFour(num // 2) return False print(isFour(16))
运行上述代码即可得到期望输出True。
内容的提问来源于stack exchange,提问作者hello1949
相关产品推荐
相关产品推荐

