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

初学者求助:请解释下述Java递归求和代码的执行过程

递归求和代码的执行逻辑详解

这段代码用的是递归思路来计算1到n的累加和,咱们一步步拆解sum(4)的执行过程,就能彻底搞懂它的运行逻辑:

递归的“拆解”阶段(从大到小调用)

  • 当main方法调用sum(4)时,因为4≠0,所以它不会直接返回结果,而是先执行return sum(3) + 4,需要等待sum(3)的计算结果
  • 接着调用sum(3),3≠0,执行return sum(2) + 3,等待sum(2)的结果
  • 调用sum(2),2≠0,执行return sum(1) + 2,等待sum(1)的结果
  • 调用sum(1),1≠0,执行return sum(0) + 1,等待sum(0)的结果
  • 调用sum(0),此时触发终止条件if(n == 0) return 0,直接返回0——这是递归的关键,没有这个终止条件,代码会无限调用直到栈溢出

递归的“回溯”阶段(从小到大计算结果)

现在开始从最底层的结果往回算:

  • sum(1)拿到sum(0)返回的0,计算0 + 1 = 1,把1返回给sum(2)
  • sum(2)拿到sum(1)返回的1,计算1 + 2 = 3,把3返回给sum(3)
  • sum(3)拿到sum(2)返回的3,计算3 + 3 = 6,把6返回给sum(4)
  • sum(4)拿到sum(3)返回的6,计算6 + 4 = 10,最终把10返回给main方法,然后System.out.println就打印出这个结果了

简单总结:递归就是先把大问题拆成一个个更小的子问题,直到碰到终止条件拿到最小的结果,再从底层往回逐步计算,最终得到原问题的答案。

内容的提问来源于stack exchange,提问作者Dan Volovsky

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 15:42:55