使用 python 生成阶乘代码有什么问题?

making factorial code with python what's the problem,?

def factorial(n):
    if (n>1):
        return n* factorial(n-1)
def factorial(n):
    if (n>1):
        return n* factorial(n-1)
    else:
        return 1

第一个代码有错误但是第二个函数运行正常 这两个程序有什么区别? 第一个代码有什么问题? 谢谢

问题是当第一个代码计算 n<=1 时,没有 returned 值。这会导致函数(默认情况下)return None。现在在计算 2 时,程序说

return n* factorial(n-1)

即相当于;

return 2*None #Since factorial(1)=None

因此它给出了一个错误,因为 NoneType 不能乘以一个整数