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

递归打印星号图案出现重复输出问题排查

递归打印星号图案重复输出的问题排查与修复

问题原因

你的递归逻辑存在重复触发打印的问题:在printRecursion2方法中,无论当前行的星号是否打印完成,每次递归调用返回后,都会执行System.out.println()和printRecursion2(row - 1, i)。也就是说,在打印一行星号的过程中(i从1到row的每一次递归),每一次递归返回时都会触发一次换行和对row-1的递归,导致同一行被多次重复打印,最终出现大量冗余图案。

修复后的代码

调整逻辑,仅当当前行的星号全部打印完毕时,才执行换行并递归打印上一行:

public static void printRecursion(int row) {
    int i = 1;
    printRecursion2(row, i);
}

private static void printRecursion2(int row, int i) {
    if (row <= 0) {
        return;
    }

    if (i <= row) {
        System.out.print("* ");
        i++;
        printRecursion2(row, i);
    } else {
        // 仅当前行星号打印完成后,才换行并递归打印下一行
        System.out.println();
        printRecursion2(row - 1, 1);
    }
}

修复说明

  • 将原本在if(i<=row)分支外的换行和递归逻辑,移至else分支内,确保只有当当前行所有星号打印完毕(i > row)时,才触发换行和对row-1的递归调用。
  • 这一修改避免了每次i递增的递归返回后重复触发下一行打印,保证每一行只被打印一次,最终得到预期的递减星号图案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 04:15:42