Python递归阶乘函数返回None问题排查求助
阶乘函数返回None的问题分析与修复
你的代码里导致返回None的核心问题在第一行的类型判断:
if type(num) is not int():
这里int()会创建一个值为0的整数实例,而type(num)返回的是变量的类型(比如传入5时,type(5)是int这个类型对象)。用类型对象和整数实例做is not比较,结果永远是True,所以不管你传什么合法的正整数,都会直接触发这个条件返回None。
修复方案
有两种常见的修正方式:
- 直接和
int类型比较,不要加括号:
def factorial(num): if type(num) is not int: return None elif num == 0: return 1 elif num < 0: return None else: return num * factorial(num - 1) factorial5 = factorial(5) print(factorial5) # 输出120
- 更推荐用
isinstance()做类型检查,它能兼容子类继承的场景:
def factorial(num): if not isinstance(num, int): return None elif num == 0: return 1 elif num < 0: return None else: return num * factorial(num - 1) factorial5 = factorial(5) print(factorial5) # 输出120
内容的提问来源于stack exchange,提问作者Sabrina
相关产品推荐
相关产品推荐

