递归方法将数字从int返回到0

Asi*_* x3 0 java methods recursion command-line return

我遇到了一个递归方法的问题,该方法将返回并在我的main方法中打印从X(X是命令行上的int)到0的数字.将数字作为字符串返回.

例如,我的命令行参数是4.我的输出应该是:4,3,2,1,0

我有点理解如何反转一个字符串,如:"123"到"321"..但是当得到一个像3这样的整数时,没有任何线索,并将它像"3,2,1,0"一样返回为字符串.:○

我的代码atm:

public static void main(String[] commandlineArguments) {
      if (commandlineArguments.length == 0) {
         System.out.println("Please enter a least one commandline!");
      } 
      else {
         Integer number = new Integer(0); // initialize number
         try {
            number = Integer.parseInt(commandlineArguments[0]);
         } 
         catch (NumberFormatException exception) { // NumberFormatException
            System.out.println(exception + " is not a integer!");
            System.exit(1); // end program
         }
         String reverse = reverse1(number);
         System.out.println(reverse);
      }
   }

   public static String reverse1(Integer number){
      if (number == 0){
         return "";
      } 
      else{
         return "";
      }
   }

}
Run Code Online (Sandbox Code Playgroud)

Mik*_*her 5

public static String reverse1(int number){
   if (number == 1){
      return "1";
   } else {
      return number + ", " + reverse1(number - 1);
   }
}
Run Code Online (Sandbox Code Playgroud)

递归的诀窍是 - 在我看来 - 总是搜索琐碎的案例.所以这里最简单的输入是1,结果是"1"

reverse1(1) = "1";
Run Code Online (Sandbox Code Playgroud)

然后你需要那个"奇怪的"递归步骤,你可以减少对那个琐碎案例的投入.

reverse1(n) = n, reverse(n-1)
Run Code Online (Sandbox Code Playgroud)

在这里你只需说:

数字n的结果总是"此数字减1"的结果,前面有额外的数字n.

想想看,它很合乎逻辑.

以"递归方式"来思考问题有时并不容易.但通常它会使事情变得更容易.