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

Java递归程序中计数器如何从0增长到9?求运行逻辑讲解

Java递归程序输出逻辑解释

首先贴出对应代码:

public class counter {
    static void myMethod(int counter) {
        if(counter == 0) {
            return;
        } else {
            System.out.print("Hello " + counter);
            myMethod(--counter);
            System.out.print(" " + counter);
        }
    }
    public static void main(String args[]) {
        myMethod(10);
    }
}

执行逻辑说明

核心规则:内层递归调用没有完全执行结束前,当前方法中位于递归调用之后的代码会暂时挂起,直到内层调用全部返回后才会继续执行。

递归下探阶段(输出Hello 10到Hello 1)

  • 首次调用myMethod(10),counter=10不满足终止条件,先打印Hello 10,执行--counter后counter变为9,调用myMethod(9),该层后续的打印语句暂时挂起,等待myMethod(9)返回。
  • myMethod(9)执行逻辑与上层一致:打印Hello 9,counter减为8,调用myMethod(8),后续打印语句挂起。
  • 以上逻辑逐层递归执行,直到调用myMethod(0)时触发counter==0的终止条件,直接返回无任何输出,下探阶段结束。

递归返回阶段(输出0到9)

下探到终止条件后开始逐层向上返回,执行各层之前挂起的打印语句:

  • 首先回到myMethod(1)的调用点,该层的counter在递归调用前已经被--counter减到了0,执行打印语句输出 0,对应你看到的第一个后续输出0。
  • myMethod(1)执行结束,返回myMethod(2)的调用点,该层的counter在递归调用前已经被减到了1,执行打印输出 1,对应后续输出1。
  • 以此类推,每向上返回一层,当前层存储的counter值就是递归调用前减后的值,依次输出2、3、4直到9。
    所有层级执行完毕后,最终输出结果就和你观测到的一致。

内容的提问来源于stack exchange,提问作者Ghostpepper.Wasabi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 04:27:03