为什么它是倒计时,然后倒计时?我不想改变它,只是理解它

2024-09-28 21:32:06 发布

您现在位置:Python中文网/ 问答频道 /正文

为什么它是倒计时,然后倒计时?不想改变它,只要理解它

def bounce (n):
    if n > 0:
        print(n)
        bounce(n-1)
    print(n)

bounce(4)

结果:

4
3
2
1
0
1
2
3
4

Tags: ifdefprintbounce倒计时
2条回答

在第一个print(n)和第二个print(n)之间,所有较小的数字都将由递归处理。只有当n为零时,函数才会打印一行并返回,而不调用自身

因此,如果我们按递归深度进行分解,我们得到:

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)

一般来说,递归函数调用之前的操作是按顺序执行的,而调用之后的操作是按相反的顺序执行的

它向下计数,因为您打印参数(正值时),然后使用相同的值减去1进行递归调用。每个递归调用也会打印它们的输入并进行递归调用,直到达到0。(该调用仅打印0。)

由于退出每个递归调用时发生的最后一个print语句,它会进行倒计时

相关问题 更多 >