|
发表于 2020-5-18 16:15:02
|
显示全部楼层
本楼为最佳答案
本帖最后由 Twilight6 于 2020-5-18 16:16 编辑
- def test(n): # 假设 n = 3 递归第一次 n = 3-1=2 # 第二次递归n=1
- if n == 1: # 开始因为n=3条件不成立执行else 第一次递归: n=2,n!=1则执行else
- # 第二次递归因为n=1,条件成立test(1)返回1
- return 1
- else:# 开始 n=3 # 递归第一次n = 2
- return test(n-1) +1 # 开始递归test(3-1) + 1 第二次递归开始 test(2-1)+1
- # 递归顺序 test(3)->test(2)->test(1)
- # 返回结果 test(1)=1 -> test(2)+1 -> test(3) +1
- # 结果就是 1 +1 +1
- # 输出等于3
复制代码
这边从最后的test开始返回
test最后一次递归时候return的值是1
最后次递归结束后一层层 返回比如test(1)->test(2)....->test(n)
因为最后一次test(1) = 1 ,而其他大于1 的 是 return test(n)+1
则每次递归回来都+1
即:
test(1)->test(2)....->test(n)
1+1+....+1(一共n个1)
|
|