[英]Printing asterisks using 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));
}
因此,首先打印較小的三角形,然后附加較長的線。
static int i = 1;
這將確保i
在調用函數之間保留其值。 第一次將其初始化為1,並且對該變量所做的任何更改將在調用之間保持不變。
編輯 :正如評論所說,這不是正確的方法。 Daniel Fischer的解決方案更好。
將i
的最大值作為第二個參數傳遞,以限制要打印的行數,即i
的最大值。
也許是兩個參數函數:
public void printTriangle(int i, int n) {
if(i <= n) {
System.out.println(printStars(i));
printTriangle(i+1, n);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.