初学者有人能告诉我这个是什么原因吗

img

img


为什么我这个输出0以上的数字一直是错的,希望有人能帮忙解答一下

return 0改为return 1
你计算阶乘的话,递归终止条件是1,不是0。所以当n等于1的时候,结束并返回1.

if n==1:
    return 1

因为你最后都会乘到0

def fact(n):
    if n<=1:
        return n
    return n*fact(n-1)
n=int(input())
print(fact(n))

觉得有用的话采纳一下哈

你是想用递归做一个阶乘吗,if 条件改为

if n==1:
    return n

或者

if n==1:
    return 1

如果最后返回0,0x任何数=0

有帮助请采纳,有问题继续交流,你的采纳是对我回答的最大的肯定和动力

因为你的算法循环调用了函数fact,如果输入等于0,那么函数会返回0;但是如果大于0,比如等于2,然后就会执行2fact(2-1),fact(2-1)再次执行fact函数,得到21*fact(0),而fact(0)等于0,所以才会出现无论你输入多大的数最后都会等于0的情况。把return 0 改成return1 就不会出现等于0 的情况了