I'm trying to solve this problem but in stuck in converting my while loop into recursion
我成功地实现了 printMany 函数,如下
public static void printMany(int count, String s){
if(count >= 1) {
System.out.print(s);
printMany(count-1, s);
}
}
但是沙漏方法的当前实现仍然使用循环,尽管它显示了正确的输出。
public static void hourglass(int numberOfStars, int numberOfSpaces){
while(numberOfStars>0){
printMany(numberOfSpaces++, " ");
printMany(numberOfStars--, "X ");
System.out.println();
}
numberOfSpaces -=2;;
numberOfStars += 2;
while(numberOfSpaces>=0){
printMany(numberOfSpaces--, " ");
printMany(numberOfStars++, "X ");
System.out.println();
}
}
我想问一下,如何将这个while循环转换为递归调用?
最佳答案
我不仅会给你答案,而且会尽力帮助你。如果您想使用递归且不使用循环来分解此问题,那么关键实际上是弄清楚递归辅助函数的参数必须是什么。似乎你总是需要记住原始的用户输入(以知道要打印多少个空格并知道何时停止递归)、当前所在的星星数量以及你是否位于顶部金字塔的一半或下半部分。有了所有这些信息,您应该能够做两件事。首先,您应该能够正确打印出一行。其次,您应该能够确定下一行应该是什么。鉴于此,您可以打印并递归,一旦达到基本情况就停止。
关于java - 如何将这个 while 循环转换为递归?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25120054/