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

递归实现printStar方法求助:n=4时无法输出指定多行星形图案

解决递归打印星号图案的问题

我来帮你搞定这个递归打印星号的需求!你当前的代码只能输出单行星号,是因为它只聚焦于一行内的星号递归输出,没处理多行的逻辑,也没覆盖从1递增回n的部分。咱们一步步来调整:

核心思路分析

要实现目标图案,递归需要完成两个阶段:

  1. 从n递减到1打印每行星号
  2. 从1递增回n打印每行星号

递归的关键逻辑是:先打印当前n颗星的行,然后递归处理n-1的情况(完成递减部分),等递归返回后,再打印一次当前n颗星的行(完成递增部分)。

完整实现代码

public class Stars {
    public static void main(String[] args) {
        printStar(4);
    }

    // 主递归方法,负责控制多行打印的逻辑
    public static void printStar(int n) {
        // 第一阶段:打印当前n颗星的行
        printSingleStarLine(n);
        
        // 递归终止条件:只有当n>1时,才继续递归处理更小的数值
        if (n > 1) {
            printStar(n - 1);
            // 第二阶段:递归返回后,再次打印当前n颗星的行(实现递增效果)
            printSingleStarLine(n);
        }
    }

    // 辅助方法:专门负责打印一行n颗星并换行
    private static void printSingleStarLine(int count) {
        if (count == 0) {
            System.out.println(); // 星号打印完后换行
        } else {
            System.out.print("*");
            printSingleStarLine(count - 1);
        }
    }
}

代码运行逻辑(以n=4为例)

  1. 调用printStar(4) → 打印****,然后递归调用printStar(3)
  2. 调用printStar(3) → 打印***,然后递归调用printStar(2)
  3. 调用printStar(2) → 打印**,然后递归调用printStar(1)
  4. 调用printStar(1) → 打印*,因n不大于1,递归终止,方法返回
  5. 回到printStar(2),递归返回后打印**
  6. 回到printStar(3),递归返回后打印***
  7. 回到printStar(4),递归返回后打印****

最终输出完全符合你的要求:

****
***
**
*
*
**
***
****

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 03:52:56