python中数字的阶乘 def事实(n): 如果n

python中数字的阶乘 def事实(n): 如果n,python,recursion,factorial,Python,Recursion,Factorial,无法从递归案例中返回值: def fact(n): if n<0: return 0 if (n==0 or n==1): return 1 else: n * fact(n-1) n = int(input("Enter a number")) fact(n) 你需要 else: n * fact(n-1) 默认返回值是None,因此您最终尝试在底部第二级之上的每一级

无法从递归案例中返回值:

def fact(n):
    if n<0:
        return 0
    if (n==0 or n==1):
        return 1
    else:
        n * fact(n-1)

n = int(input("Enter a number"))
fact(n)
你需要

    else:
        n * fact(n-1)
默认返回值是
None
,因此您最终尝试在底部第二级之上的每一级将
None
乘以
n

例如,当你尝试事实(3)时,你会重复

    else:
        return n * fact(n-1)
我相信你的意思是

3 * fact(2)
  2 * fact(1)
    fact(1) is 1 ... return that ...
  2 * 1 is 2 ... but you then return None ...
3 * None ... is illegal

为什么回答和标记为重复?@PranavHosangadi我的结尾是因为“简单的打字错误”。一个金蟒成员出现了,他有一个不同的想法,这会自动覆盖我。啊,我明白了。像这样基本的问题几乎总是有重复的——最好找到一个并将其链接起来,而不是回答。
return n * fact(n-1)