|
发表于 2024-3-13 11:48:08
|
显示全部楼层
本帖最后由 jackz007 于 2024-3-13 12:12 编辑
递归函数都有两个分支,一个分支是供递归到底时执行,另一个分支供递归未到底时,继续递归执行。所以,递归函数需要做的头一件事,就是判定递归是否已经到底。
就本例而言,递归函数 sum(n) 是根据输入参数 n 来判断递归状态的,当 n > 0 时,递归未到达终点,n = 0 时,递归到达终点。
以 sum(6) 为例,在递归过程中,n 值从 6 开始逐渐减小,当 n = 0 时,递归到达终点,从这个时候起,sum(0) 开始有了确定的返回值 1,于是,sum(1) = 1 * sum(0) = 1 * 1 = 1,sum(2) = 2 * sum(1) = 2 * 1 = 2,sum(3) = 3 * sum(2) = 3 * 2 = 6,sum(4) = 4 * sum(3) = 4 * 6 = 24 . . .,最后,递推出 sum(6) = 720。
- sum(6)
- sum(5)
- sum(4)
- sum(3)
- sum(2)
- sum(1)
- sum(0) <--- 【递归终点】
- return 1 <--- 【递归终点】
- return 1 * sum(0) = 1
- return 2 * sum(1) = 2 * 1 = 2
- return 3 * sum(2) = 3 * 2 = 6
- return 4 * sum(3) = 4 * 6 = 24
- return 5 * sum(4) = 5 * 24 = 120
- return 6 * sum(5) = 6 * 120 = 720
复制代码 |
|