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