本帖最后由 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>
|