|
发表于 2024-8-10 21:42:27
|
显示全部楼层
本帖最后由 jackz007 于 2024-8-10 22:15 编辑
递归是一个函数不断调用自己的过程,一个递归函数必须要设置递归终点,否则,递归太深会因为堆栈耗尽而导致运行错误。
递归终点一般是通过函数的输入参数来进行控制,在递归过程中,输入参数必须朝一个固定方向进行变化,根据情况可以选择i逐渐减小或者增大,当变化达到一定的数值时,递归终止。
以本例为例,输入参数 n 在递归中是逐渐减小的过程,当 n 大于 2 的时候,会继续递归,否则,当 n = 1 或 n = 2 的时候,递归到达终点,开始进入返回过程,并逐级执行递归调用语句后面的语句,直到递归调用全部返回。
考察、运行一下这个代码可能会有助于加深对递归函数的理解
- def recurse(n , c):
- if c < 11:
- print('第【%2d】层:进入 n = %3d' % (c , n)) # 进入过程执行
- recurse(n + 1 , c + 1) # 递归
- print('第【%2d】层:退出 n = %3d' % (c , n)) # 退出过程执行
- else :
- print(' 【终点】:c = %2d , n = %3d' % (c , n)) # 递归终点
- recurse(33 , 0)
复制代码
运行实况:
- D:\[exercise]\Python>python recurse.py
- 第【 0】层:进入 n = 33
- 第【 1】层:进入 n = 34
- 第【 2】层:进入 n = 35
- 第【 3】层:进入 n = 36
- 第【 4】层:进入 n = 37
- 第【 5】层:进入 n = 38
- 第【 6】层:进入 n = 39
- 第【 7】层:进入 n = 40
- 第【 8】层:进入 n = 41
- 第【 9】层:进入 n = 42
- 第【10】层:进入 n = 43
- 【终点】:c = 11 , n = 44
- 第【10】层:退出 n = 43
- 第【 9】层:退出 n = 42
- 第【 8】层:退出 n = 41
- 第【 7】层:退出 n = 40
- 第【 6】层:退出 n = 39
- 第【 5】层:退出 n = 38
- 第【 4】层:退出 n = 37
- 第【 3】层:退出 n = 36
- 第【 2】层:退出 n = 35
- 第【 1】层:退出 n = 34
- 第【 0】层:退出 n = 33
- D:\[exercise]\Python>
复制代码
|
|