java - 使用递归打印星号

标签 java recursion

printStars(j) 方法可返回一个字符串——一行 j 星号。我需要编写一个递归打印 n 行星号的三角形的方法。第一行需要有一个 *,第二行需要有两个 *,等等。不能使用迭代循环(所以不能使用 while、do-while 或 for)。

向后执行的代码非常简单:

public void printTriangle(int n) {
    if(n >= 1) {
        printStars(n));
        printTriangle(n - 1);
    }
}

到目前为止,我的代码在上面,但在下面是相反的。这是不正确的,因为 i 在每个循环中都被重置为 1。我只是不知道该怎么做。我只能使用单参数函数。

public void printTriangle(int n) {
    int i = 1;

    if(i <= n) {
        printStars(i);
        printTriangle(i + 1);
    }
}

最佳答案

只是先重复,然后打印行:

public void printTriangle(int n) {
    if(n > 1) {
        printTriangle(n - 1);
    }
    System.out.println(makeStars(n));
}

因此首先打印较小的三角形,然后附加较长的线。

关于java - 使用递归打印星号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12921263/

相关文章:

java - 我无法弄清楚扫雷递归算法

java - 将数据值添加到搜索算法中?

java - 当 A > 1 时,二次公式失败?

java - Struts 如果带有迭代器标签的标签不起作用

java - Hibernate 无法确定集合的类型

python - 连续Python中相同的13个字符的列表

java - 递归地从扫描仪输入中反转数字_order_

c++ - 如何在 C++ 函数中实现递归函数?

java - 随机类不适用于 Android 4.1+

java - 似乎无法将自定义对象写入 Firebase 数据库?