python如何理解递归过程

递归到最后不都是会变为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))

img

就假设n是2,那就是
nf(n-1)=2f(1)=1

如有帮助请采纳。

递归就好比求阶层,当n=1停止执行
result=n*(n-1)*....1
所以返回结果不是1额

递归就是套娃,直到符合跳出递归条件才会停止