为什么我的Python递归阶乘函数无法正常运行?
阶乘递归函数返回None的问题分析
你的代码问题出在缩进错误,导致递归分支的返回语句永远不会被执行,且非基准情况时函数没有返回值,Python默认返回None。
看你的原始代码:
def factorial_recursive(n): if n == 1 or n == 0: return 1 return n * factorial_recursive(n-1) # 这条语句缩进在if代码块内,永远无法执行
- 当
n等于0或1时,函数执行return 1后直接退出,后面的递归计算语句根本不会运行; - 当
n大于1时,不会进入if分支,函数没有任何return语句,Python会默认返回None,这就是你得到None的原因。
修正后的代码只需调整递归语句的缩进,把它移到if代码块外面:
def factorial_recursive(n): if n == 1 or n == 0: return 1 return n * factorial_recursive(n-1)
这样当n>1时,函数会执行递归计算,最终返回正确的阶乘结果120。
内容的提问来源于stack exchange,提问作者Moeed Khan
相关产品推荐
相关产品推荐

