我首先需要创建一个名为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方法,所以我不知道如何递归以使每行的星星数增加。
答案 0 :(得分:1)
您很亲密,首先在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);
}
答案 1 :(得分: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));
}
}