【问题标题】:Recursive Fibonacci Sequence print out the list递归斐波那契数列打印出列表
【发布时间】:2013-04-24 21:16:23
【问题描述】:

我有以下递归斐波那契数列的代码

    if (term < 2){
        System.out.print("1 ");
        return 1;
    } 
        int results = fibonacci(term - 1) + fibonacci(term - 2);
        System.out.print(results + " ");

        return results;

我得到的输出是

您希望将斐波那契数列计算到哪个术语:4

1 1 2 1 3 1 1 2 5 第4个是5

如何让它打印出来

1 1 2 3 第 4 是 5

【问题讨论】:

    标签: java recursion computer-science fibonacci


    【解决方案1】:

    使用尾递归。

      public static void main(String[] args) {
    
        System.out.print("The 10th is: " + fibonnaci(10));
      }
    
      public static int fibonnaci(int number) {
         return fibonnaciHelper(number, 1, 1);
      }
    
      public static int fibonnaciHelper(int term, int lower, int higher) {
          if (term < 2){
              return higher;
    
          } 
    
          System.out.print(higher + " ");
          int results = fibonnaciHelper(term - 1, higher, higher + lower);
          return results;
      }
    

    【讨论】:

    • 我了解您的程序是如何工作的,但是,我希望使用我编写的递归程序打印出 1 1 2 3 5 8 13 ...。
    • @Shi_No_Tenshi 试试 System.out.println(fibnnoaci(6));
    • @Shi_No_Tenshi 我不明白你的问题
    • @Shi_No_Tenshi 你不能。这是不可能的。
    【解决方案2】:

    迭代斐波那契数列 - 它位于某处

    public static int fib(int n) {
                int prev1=0, prev2=1;
                for(int i=0; i<n; i++) {
                    int savePrev1 = prev1;
                    prev1 = prev2;
                    prev2 = savePrev1 + prev2;
                }
                return prev1;
    }
    

    【讨论】:

      【解决方案3】:

      您可以尝试以下方法:

      public void fib(int n){
          if(n==0)
              System.out.println(1);
      
          else System.out.println(fib(1,n,0,1);
      }
      
      private int fib(int iteration, int limit, int n0, int n1){
          if(iteration==limit)
               return(n0+n1);
      
          fib(++iteration,limit,n1,(n0+n1));
      }
      

      【讨论】:

        猜你喜欢
        • 2013-04-11
        • 2023-01-18
        • 2012-02-15
        • 2015-01-04
        • 2011-07-27
        • 1970-01-01
        • 2016-10-31
        • 2022-11-28
        相关资源
        最近更新 更多