方法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);
}
}
答案 0 :(得分:8)
首先重复,然后打印行:
public void printTriangle(int n) {
if(n > 1) {
printTriangle(n - 1);
}
System.out.println(makeStars(n));
}
因此首先打印较小的三角形,然后附加较长的行。
答案 1 :(得分:1)
static int i = 1;
这将确保i
在函数调用之间保留其值。
它首次初始化为1,对变量所做的任何更改都将在调用后保持不变。
编辑:正如评论所说,这不是正确的方法。 Daniel Fischer的解决方案更好。
答案 2 :(得分:0)
将i
的最大值作为第二个参数,以限制要打印的行数,即i
的最大值。
答案 3 :(得分:0)
可能有两个参数功能:
public void printTriangle(int i, int n) {
if(i <= n) {
System.out.println(printStars(i));
printTriangle(i+1, n);
}
}