求初始参数n=6时递归方法m5的输出、递归边界、递归条件及递归深度
递归方法m5分析(初始调用参数n=6)
public int m5(int n){ if(n>=3){ n += m5(n-3); n += m5(n/2); } return n; }
1. 递归边界与递归条件
- 递归边界(base case):当n < 3时,不进入if分支,直接返回当前n的值,无后续递归调用。
- 递归条件(recursive case):当n ≥ 3时,先后触发
m5(n-3)和m5(n/2)两次递归调用,将两次调用的返回值累加到当前变量n后返回。
2. 输出结果计算
我们从底层小参数的返回值开始向上推导:
- 边界场景返回值:
m5(0)=0,m5(1)=1,m5(2)=2 - 计算
m5(3):
初始n=3≥3,先执行n += m5(0)→ n=3+0=3;再执行n += m5(1)→ n=3+1=4,返回4,即m5(3)=4 - 计算
m5(5):
初始n=5≥3,先执行n += m5(2)→ n=5+2=7;再执行n += m5(3)(Java int除法7/2=3)→ n=7+4=11,返回11,即m5(5)=11 - 计算初始调用
m5(6):
初始n=6≥3,先执行n += m5(3)→ n=6+4=10;再执行n += m5(5)(当前n=10,10/2=5)→ n=10+11=21
最终输出结果为21
3. 递归深度
递归深度按初始调用为第1层计算,最深调用链为m5(6) → m5(5) → m5(3) → m5(0),共4层,因此递归深度为4
内容的提问来源于stack exchange,提问作者Dia
相关产品推荐
相关产品推荐

