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

Java递归方法的打印执行逻辑及输出结果原理咨询

递归打印逻辑执行流程解析

你提供的Java代码如下:

public static void wackyOutput(String wacky){
    if(wacky.length() < 2){
        return;
    }
    wacky = wacky.substring(1, wacky.length());
    wackyOutput(wacky);
    System.out.print(wacky);
}

核心逻辑说明

出现该结果的核心原因是:每一层递归调用返回后,都会执行当前层剩余的打印语句,而非仅最内层递归执行打印。递归调用遵循栈的「先进后出」规则,先触发的调用会后执行完毕,因此打印操作会从最内层递归往外层依次执行,最终输出反向拼接的截取结果。

逐调用层执行流程拆解

执行wackyOutput("ABCD")时完整流程如下:

  • 第1层调用:入参为"ABCD",长度≥2,截取后当前层wacky值为"BCD",先触发wackyOutput("BCD"),打印语句进入等待状态
  • 第2层调用:入参为"BCD",长度≥2,截取后当前层wacky值为"CD",先触发wackyOutput("CD"),打印语句进入等待状态
  • 第3层调用:入参为"CD",长度≥2,截取后当前层wacky值为"D",先触发wackyOutput("D"),打印语句进入等待状态
  • 第4层调用:入参为"D",长度<2,直接return返回至第3层
  • 第3层恢复执行:打印当前层wacky值"D",执行完毕返回至第2层
  • 第2层恢复执行:打印当前层wacky值"CD",执行完毕返回至第1层
  • 第1层恢复执行:打印当前层wacky值"BCD",方法执行结束

三次打印结果拼接为"D"+"CD"+"BCD",即最终输出的"DCDBCD"。

内容的提问来源于stack exchange,提问作者merve şentürk

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 10:15:04