打印斐波那契数的递归调用

问题描述 投票:0回答:1

如何打印斐波那契递归调用的结果,使输出如下所示

记录结果为 Fib(1) 为:1 Fib(0) 为:0 Fib(2) 为:1 Fib(1) 为:1 Fib(3) 为:2 Fib(1) 为:1 Fib(0) 为:0 Fib(2) 为:1 Fib(4) 为:3 Fib(1) 为:1 Fib(0) 为:0 Fib(2) 为:1 Fib(1) 为:1 Fib(3) 为:2 Fib(5) 为:5

这是我的代码

public class Test {
   public static void main(String[] args) {

      Fibonacci fib = new Fibonacci();
      System.out.println("Rec results is ");
      fib.recFib(5);

   }
}

class Fibonacci {
   
     //Your code starts here
      public int recFib(int n){
         
         if(n <= 1) {
            return n;
         }
         else {
            int result = recFib(n -1) + recFib(n-2);
            //System.out.println("Fib("+ n +") is: "+ result);
            return recFib(n -1) + recFib(n-2);
         }
      }
   // your code ends here

}

我尝试将打印语句放在不同的位置,但始终无法获得正确的输出。这不是一个家庭作业问题,而是课堂课程的一部分,所以希望你们能帮助我更好地理解它。我相信你只能使用一个打印语句。

java recursion fibonacci
1个回答
0
投票

如果将

print
语句从
if-else
中提取出来,那么将先进行递归调用,然后再打印(因此,您将在打印
n-1
的结果之前打印
n-2
n
的结果) 。这样你就得到了想要的结果。

class Fibonacci {

    //Your code starts here
    public int recFib(int n) {
        int result;
        if (n <= 1) {
            result = n;
        } else {
            result = recFib(n - 1) + recFib(n - 2);
        }
        System.out.println("Fib(" + n + ") is: " + result);
        return result;
    }
    // your code ends here
}

这会导致

Rec results is 
Fib(1) is: 1
Fib(0) is: 0
Fib(2) is: 1
Fib(1) is: 1
Fib(3) is: 2
Fib(1) is: 1
Fib(0) is: 0
Fib(2) is: 1
Fib(4) is: 3
Fib(1) is: 1
Fib(0) is: 0
Fib(2) is: 1
Fib(1) is: 1
Fib(3) is: 2
Fib(5) is: 5

祝上课顺利!

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.