我看過關于同樣問題的帖子,但我需要創建相同的三角形,只反映。例如,如果我的遞回方法rightTriangle呼叫rightTriangle(4),輸出應該是這樣的:

這是使星號直角三角形的作業代碼,但被反映:
public static String rightTriangle(int n){
if( n <= 0 ){
return " ";
}
String line = rightTriangle(n - 1);
line = line "*";
System.out.println(line);
return line;
}
的輸出rightTriangle(4)是正確的,除了星號三角形列印出垂直反射而不是上面的影像。
任何幫助將不勝感激。
uj5u.com熱心網友回復:
可能需要將空格前綴作為引數傳遞給遞回方法:
public static void rightTriangle(int n) {
rightTriangle(n, "");
}
public static String rightTriangle(int n, String prefix) {
if( n <= 0 ) {
return "";
}
String line = rightTriangle(n - 1, prefix " ") "*";
System.out.println(prefix line);
return line; // only asterisks
}
輸出rightTriangle(4):
*
**
***
****
更新
“單一方法”版本可能如下所示:
static int max = Integer.MIN_VALUE;
public static String rightTriangle(int n) {
if( n <= 0 ) {
return "";
}
max = Math.max(max, n);
String line = rightTriangle(n - 1) "*";
System.out.println(" ".repeat(max -(n - 1)) line);
return line;
}
輸出 rightTriangle(5)
*
**
***
****
*****
uj5u.com熱心網友回復:
另一種方法:
public static void main(String[] args) {
rightTriangle(4, 1, 1);
}
public static void rightTriangle(int totalLines, int currentLine, int n) {
if (currentLine <= totalLines) {
if (n <= (totalLines - currentLine)) {
System.out.print(" ");
}
else {
System.out.print("*");
}
if (n < totalLines) {
rightTriangle(totalLines, currentLine, n 1);
}
else {
System.out.println();
rightTriangle(totalLines, currentLine 1, 1);
}
}
}
呼叫它:
rightTriangle(10, 1, 1);
產生:
*
**
***
****
*****
******
*******
********
*********
**********
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/329935.html
下一篇:從動態嵌套陣列生成物件的平面陣列
