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 的情况了