使用递归打印星号

vai*_*dil 1 java recursion

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

向后执行的代码很简单:

public void printTriangle(int n) {
    if(n >= 1) {
        printStars(n));
        printTriangle(n - 1);
    }
}
Run Code Online (Sandbox Code Playgroud)

到目前为止,我的代码对于上面的代码却反过来了.这是不正确的,因为i在每个循环中重置为1.我只是不确定如何去做.我只能使用单参数功能.

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

    if(i <= n) {
        printStars(i);
        printTriangle(i + 1);
    }
}
Run Code Online (Sandbox Code Playgroud)

Dan*_*her 8

首先复发,然后打印线:

public void printTriangle(int n) {
    if(n > 1) {
        printTriangle(n - 1);
    }
    System.out.println(makeStars(n));
}
Run Code Online (Sandbox Code Playgroud)

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