为什么先往下数然后倒着数?不想改变,只要理解就好。
def bounce (n):
if n > 0:
print(n)
bounce(n-1)
print(n)
bounce(4)
结果:
4
3
2
1
0
1
2
3
4
向下计数,因为您打印参数(当为正数时),然后使用相同的值- 1进行递归调用。每个递归调用也打印它们的输入并进行递归调用,直到得到0。(该调用只打印0)
由于在退出每个递归调用时发生的最后一个print语句,它会计数。
在第一个print(n)
和第二个print(n)
之间,所有较小的数字都将被递归处理。只有当n为0时,函数才会输出一行,并且不调用自身返回。
那么如果我们把它按递归深度分解我们得到:
bounce(4)
|print(4) 4 1st print(n)
|bounce(3)
| |print(3) 3 1st print(n)
| |bounce(2)
| | |print(2) 2 1st print(n)
| | |bounce(1)
| | | |print(1) 1 1st print(n)
| | | |bounce(0)
| | | | |print(0) 0 2nd print(n)
| | | |print(1) 1 2nd print(n)
| | |print(2) 2 2nd print(n)
| |print(3) 3 2nd print(n)
|print(4) 4 2nd print(n)
作为一般规则,在递归函数调用自身之前按顺序执行,之后按相反顺序执行。