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

Java递归打印星号三角形:受限条件下的实现可行性问询

能否在无循环/额外变量/方法的限制下用Java实现星号三角形?

需求:用Java实现星号三角形打印,需满足以下严格限制:

  • 不得使用任何循环
  • 不得新增额外方法(仅使用现有recurse方法)
  • 不得新增额外参数(仅保留int x参数)
  • 不得使用额外变量(方法内不能定义新变量)
  • 不得使用任何字符串方法

预期输出(以n=4为例):

****
***
**
*

或

*
**
***
****

现有基础代码仅能打印一行n个星号:

public class Test {
    public static void main(String[] args) {
        recurse(3);
    }

    public static void recurse(int x) {
        if (x == 0){
            System.out.println();
            return;
        }
        
        System.out.print("*");
        recurse(x-1);
    }
}

可行解存在:利用递归回溯+参数状态标记

完全符合所有限制的解法是存在的,核心思路是用参数的正负值区分两种递归逻辑:正数值时处理行的层级(控制打印顺序),负数值时处理单行内的星号打印,全程无需额外变量、方法或循环。

实现代码(生成从1到n的递增三角形)

public class Test {
    public static void main(String[] args) {
        recurse(4);
    }

    public static void recurse(int x) {
        if (x == 0) {
            System.out.println();
            return;
        }
        if (x > 0) {
            // 先递归处理上一行,实现从1到n的递增顺序
            recurse(x - 1);
            // 切换到当前行的星号打印逻辑,用负数标记
            recurse(-x);
        } else {
            // 打印单个星号,递归处理剩余星号(x+1等价于绝对值减1)
            System.out.print("*");
            recurse(x + 1);
        }
    }
}

实现代码(生成从n到1的递减三角形)

如果需要递减顺序的三角形,只需调整递归层级的处理顺序:

public class Test {
    public static void main(String[] args) {
        recurse(4);
    }

    public static void recurse(int x) {
        if (x == 0) {
            System.out.println();
            return;
        }
        if (x > 0) {
            // 先打印当前行,再递归处理下一行,实现从n到1的递减顺序
            recurse(-x);
            recurse(x - 1);
        } else {
            System.out.print("*");
            recurse(x + 1);
        }
    }
}

限制的合理性说明

如果严格到“不允许利用参数的状态转换(比如正负值)”,那确实没有可行解——因为要生成多行,必须在单行打印完成后触发下一行的逻辑,而没有任何状态标记的话,无法区分“处理行层级”和“打印单行星号”这两种不同的递归行为。但通常这类限制中的“额外变量”指的是方法内新增的局部变量/成员变量,而非对现有参数的逻辑复用,因此上述解法是完全合规的。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 13:07:33