递归逐级返回

 

def recursive_test(n):
    print('数字:',n)
    if n==0:
        print('结束')
    else:
        recursive_test(n-1)
    print('number:',n)               #看这里 就加了这一句

recursive_test(3)

输出结果为

数字: 3
数字: 2
数字: 1
数字: 0
结束
number: 0
number: 1
number: 2
number: 3

 

为什么是返回下面的递增数字,这个和调用栈相关

调用栈最经常被用于存放子程序的返回地址。在调用任何子程序时,主程序都必须暂存子程序运行完毕后应该返回到的地址。因此,如果被调用的子程序还要调用其他的子程序,其自身的返回地址就必须存入调用栈,在其自身运行完毕后再行取回。在递归程序中,每一层次递归都必须在调用栈上增加一条地址,因此如果程序出现无限递归(或仅仅是过多的递归层次),调用栈就会产生栈溢出

 

 

 参考:https://blog.csdn.net/qq_41239584/article/details/82253771

 

posted @ 2020-11-27 11:52  坚强的小蚂蚁  阅读(514)  评论(0编辑  收藏  举报