Python递归阶乘函数实现问题:计算结果异常排查求助
递归阶乘函数问题排查与解决
你提供的递归阶乘函数逻辑本身是正确的:
def factorial(n): if n == 0: return 1 else: return n * factorial(n - 1)
调用factorial(5)会返回120,factorial(3)返回6,完全符合阶乘的计算规则。出现"输入正整数无法返回正确值"的问题,大概率是以下场景导致:
输入未转为整数:如果通过
input()获取用户输入,默认得到的是字符串类型,直接传入函数会引发类型错误,或导致计算异常。解决方式是先将输入转为整数:num = int(input("请输入正整数:")) print(factorial(num))未输出计算结果:仅调用
factorial(n)而未通过print()输出,会导致看不到返回值,误以为函数计算错误。确保调用时打印结果,或将结果赋值给变量后查看。大数递归栈溢出:当输入的正整数过大(比如超过1000),Python默认的递归深度限制会触发
RecursionError。这种情况下建议改用迭代实现:def factorial(n): result = 1 for i in range(1, n+1): result *= i return result
内容的提问来源于stack exchange,提问作者Mahima Chandel
相关产品推荐
相关产品推荐

