我有一项任务是介绍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));
我试过他的版本,它在它的边上打印三角形,但最大的线只打印一次,而不是两次。我花了一整天的时间试图修改他的,在中间添加一条重复的行,我开始认为这是不可能的。
任何帮助都将不胜感激。我对此完全停滞不前。
https://stackoverflow.com/questions/16158829
复制相似问题