使用递归从星星中创建一个三角形

问题描述 投票:0回答:2

我首先需要创建一个名为printStars的方法,该方法可以在一行中打印n个星星。例如,printStars(5)显示行*****。 使用printStars方法,编写一个方法printTriangle来创建一个星形三角形。例如,printTriangle(5)应该显示:

*

**

(***

(****

(*****

在第二部分中,您应该修改您的代码,使其显示为:

(*****

(****

(***

**

*

第二部分的解决方案:

public static String printStars(int n) {
    if(n == 0) {
        return "";
    }
    return "*" + printStars(n - 1);
}
public static String printTriangle(int n) {
    if(n == 0) {
        return "";
    }
    return printStars(n) + "\n" + printTriangle(n - 1);
}
public static void main(String[] args) {
    System.out.println(printTriangle(7));
}

我无法解决第一部分的原因是它要求您使用printStars方法,所以我不知道如何递归以使每行的星星数增加。

java
2个回答
0
投票
public class GFG{
    public static String printStars(int n) {
    if(n == 0) {
        return "";
    }
    return "*" + printStars(n - 1);
}
public static String printTriangle(int n) {
    if(n == 0) {
        return "";
    }
    return printStars(n) + "\n" + printTriangle(n - 1);
}
public static String printSimpleTriangle(int n, int i) {
    if(n<i) {
        return "";
    }
    return printStars(i) + "\n" + printSimpleTriangle(n, i+1);
}

public static void main(String[] args) {
    System.out.println(printTriangle(7));
    System.out.println(printSimpleTriangle(7,1));
}
}

0
投票

您已经关闭,首先在printTriangle中递归,然后在printStars中递归。另外,为防止n等于1的空行测试。并且更喜欢System.lineSeparator()而不是\n。喜欢,

public static String printTriangle(int n) {
    if (n <= 0) {
        return "";
    } else if (n == 1) {
        return printStars(1);
    }
    return printTriangle(n - 1) + System.lineSeparator() + printStars(n);
}
© www.soinside.com 2019 - 2024. All rights reserved.