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

Java递归printOut函数输出异常:仅打印首位数字,求修改方案

修复递归打印正整数的printOut函数问题

你的代码问题出在递归逻辑不完整:只有当n < 10时才调用printDigit,递归的上层调用(比如处理7623、762这些数)没有打印当前数的最后一位,导致最终只输出了最高位的7。

正确的逻辑应该是:不管n是否大于等于10,在递归处理完高位之后,都要打印当前数的最后一位(n%10)。去掉else分支,把printDigit调用放在递归之后即可。

修正后的完整代码:

public class PrintOutTest
{
    public static void main(String[] args)
    {
        Print.printOut(76234);
    }
}

class Print
{
    public static void printOut(int n)
    {
        if (n >= 10)
        {
            printOut(n / 10);
        }
        // 移除else,无论是否递归,都打印当前数字的最后一位
        printDigit(n % 10);
    }

    static void printDigit(int n)
    {
        System.out.print(n);
    }
}

逻辑说明

以输入76234为例,递归执行流程如下:

  1. printOut(76234) → 递归调用printOut(7623)
  2. printOut(7623) → 递归调用printOut(762)
  3. printOut(762) → 递归调用printOut(76)
  4. printOut(76) → 递归调用printOut(7)
  5. printOut(7) → 不满足n>=10,直接执行printDigit(7),输出7
  6. 回到printOut(76),执行printDigit(6),输出6
  7. 回到printOut(762),执行printDigit(2),输出2
  8. 回到printOut(7623),执行printDigit(3),输出3
  9. 回到printOut(76234),执行printDigit(4),输出4

最终终端会完整输出76234。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 07:10:15