java - 如何将这个 while 循环转换为递归?

标签 java recursion

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/

相关文章:

php - 放置 View 函数的最佳位置是什么?

java - java中的嵌套接口(interface)

java - 递归斐波那契算法的空间复杂度是多少?

java - 迷宫中最长的路径

Java——如何从父类(super class)列表干净地构造子类列表?

tsql - 如何使用hierarchyid sql显示所有递归结果

java - 同步 : Caused by: org. codehaus.groovy.control.MultipleCompilationErrorsException : startup failed error in syncing. ... androidstudio 3.6.1

java - 使用 try catch 和 while 只接受正整数

java - java字符串的效率