【问题标题】:Recursive method return numbers from int to 0递归方法返回从 int 到 0 的数字
【发布时间】:2014-02-28 00:38:42
【问题描述】:

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

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

我有点了解如何将字符串反转,例如:“123”到“321”。但是在获取像 3 这样的整数并将它像“3, 2, 1, 0”作为字符串返回时不知道。 :o

我的密码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 "";
      }
   }

}

【问题讨论】:

  • 为什么在你的 reverse1 方法中两个 return 语句都返回空字符串?

标签: java recursion methods command-line return


【解决方案1】:
public static String reverse1(int number){
   if (number == 1){
      return "1";
   } else {
      return number + ", " + reverse1(number - 1);
   }
}

递归的诀窍是——在我看来——总是搜索微不足道的情况。 所以这里最简单的输入是 1,结果是“1”

reverse1(1) = "1";

然后你需要那个“奇怪的”递归步骤来减少你对那个琐碎案例的输入。

reverse1(n) = n, reverse(n-1)

这里你就说:

一个数字n的结果总是“这个数字减1”加上前面那个额外的数字n的结果。

想一想,这很合乎逻辑。

有时以这种“递归方式”来思考问题并不容易。但通常它会让事情变得容易得多。

【讨论】:

  • 嗯,你的回答确实是对的!但是,你能向我解释一下 reverse1(number - 1);作品:)。我的意思是,我真的很想了解这个概念:D
  • asdfghjk 真棒解释!递归就像一个循环!并以基本情况结束。我现在知道了。非常感谢 Mikescher :D
【解决方案2】:
public static void main(String[] commandlineArguments) {
    printNumber(number);

}

public static String printNumber(Integer number){
    if (number == 0){
       return "0";
    } 
    return number +" " + printNumber(number-1);
}

【讨论】:

    猜你喜欢
    • 2014-03-03
    • 1970-01-01
    • 2012-09-21
    • 1970-01-01
    • 2015-12-13
    • 2012-02-23
    • 2016-08-03
    • 2015-06-05
    • 2018-07-15
    相关资源
    最近更新 更多