You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java递归方法sum(7)运行输出13的具体原因是什么?

你给出的Java代码如下:

public class Test{
    
    public static int sum(int num){
        if (num <= 1){
            return num;
        }
        return 2 + sum(num -1);
        
    }

     public static void main(String []args){
       System.out.print(sum(7));
     }
}
1 递归逻辑规则

sum方法的执行逻辑分为两个分支:

  • 终止分支:当入参num小于等于1时,直接返回num本身,不再继续递归
  • 递归分支:当入参num大于1时,返回值为2加上sum(num-1)的计算结果
2 完整执行过程拆解

调用sum(7)的完整展开和回推过程如下:

递归向下展开阶段(从入参7到触发终止条件)

  • sum(7) = 2 + sum(6)
  • sum(6) = 2 + sum(5)
  • sum(5) = 2 + sum(4)
  • sum(4) = 2 + sum(3)
  • sum(3) = 2 + sum(2)
  • sum(2) = 2 + sum(1)
  • sum(1) 触发终止条件,返回 1

结果向上回推阶段(从终止值开始逐层计算上层返回值)

  • sum(2) = 2 + sum(1) = 2 + 1 = 3
  • sum(3) = 2 + sum(2) = 2 + 3 = 5
  • sum(4) = 2 + sum(3) = 2 + 5 = 7
  • sum(5) = 2 + sum(4) = 2 + 7 = 9
  • sum(6) = 2 + sum(5) = 2 + 9 = 11
  • sum(7) = 2 + sum(6) = 2 + 11 = 13
3 结果为13的数学逻辑

这个递归本质是等差数列计算:从num=1开始,每往上加一层就多+2,一共执行了num-1次+2操作,再加上终止条件返回的1,最终计算公式为:
sum(num) = 2*(num-1) + 1 = 2*num -1
代入num=7可得:2*7 -1 =13,和执行结果完全一致。

内容的提问来源于stack exchange,提问作者Chris Agbemabiese

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 00:27:03