递归到最后不都是会变为1吗,为什么返回的不是return 1
def factorial(n):
if n==1:
return 1
else:
return n*factorial(n-1)
number=int(input('请输入一个正整数:'))
result=factorial(number)
print("%d的阶乘是:%d"%(number,result))
改下代码,增加输出
def factorial(n):
print("现在处理",n)
if n==1:
return 1
else:
print("递归调用", n-1)
m = n*factorial(n-1)
print("递归返回值", m,"返回给上一层")
return m
number=int(input('请输入一个正整数:'))
result=factorial(number)
print("%d的阶乘是:%d"%(number,result))
就假设n是2,那就是
nf(n-1)=2f(1)=1
如有帮助请采纳。
递归就好比求阶层,当n=1停止执行
result=n*(n-1)*....1
所以返回结果不是1额
递归就是套娃,直到符合跳出递归条件才会停止