我有一个在 Java 中介绍递归的作业,但我遇到了障碍。该赋值需要一种递归方法来输出多个星号的行数,具体取决于传递给它的整数值。例如,如果将 4 作为变量 n 传入,则输出将有一个星号的第一行,下一行 2 个星号,下一个 3 个星号,下一个 4,然后是 4、3、2 和 1。
我已经能够完成输出的前半部分(虽然不确定它是否是最佳的),但不知道如何让方法反转回来。这一切都将在一个方法调用中完成,并将变量 (n) 传递给该方法。
这是我到目前为止的方法:
public static void myMethod(int n)
{
if (n <= 1) {
System.out.print("*");
} else {
myMethod(n - 1);
for (int i = 0; i < n; i++) {
System.out.print("*");
}
}
System.out.print("\n"); // new line
}
它是从 main 调用的:
myMethod(n);
所以我有一个for循环,它将在同一行'n'次打印一个星号。在 for 循环之后,它继续到下一行并循环,改变 n。但我不知道如何让它逆转。
我的方法从方法中打印出来。我的导师向我展示了一个示例版本,它传递了 2 个变量 (n) 和一个空字符串。
public static String myMethod(int n, String displayStr) {
String currentStr = "";
for (int i = 0; i < n; i++)
currentStr += "*";
currentStr += "\n";
if (displayStr == null){
return myMethod((n - 1), currentStr);
} // end base case
else if (n > 0){
return myMethod((n - 1), (currentStr + displayStr + currentStr));
}
else {
return displayStr;
}
} // end recursion method myMethod
他的版本使用以下代码行从 main 打印:
System.out.println(myMethod(n, null));
我试过他的版本,它在它的侧面打印三角形,但最大的线只打印一次而不是两次。我花了一整天的时间试图改变他在中间添加重复的行,并且开始认为这是不可能的。
任何帮助将不胜感激。我对此完全停滞不前。