簡體   English   中英

是斐波那契數列遞歸嗎? 如果不告訴怎么

[英]Is it fibonacci series recursion or not? If not tell how

此代碼適用於10個以下的斐波那契數字。 但是我想知道這是否是遞歸函數。 斐波那契數列的基本公式是f(n)=f(n-1)+f(n-2) 我想要一個斐波那契程序。 我試過了,但是時間復雜度更大,這就是在程序上方進行少量更改的原因。

int n=10,i,f0=1,f1=1,f2;

for(i=1;i<=n;i++)
{
  System.out.println(f0);
  f2=f0+f1;
  f0=f1;
  f1=f2;
  f2=f0;
}

根據定義,遞歸是一個調用自身(直接或間接)的函數。

除了println() ,程序中沒有函數調用。 因此不,它不是遞歸的。

這是一個簡單的迭代算法。

實際上,直接的遞歸實現對於此問題不是一個好的選擇,因為它將具有指數級的時間復雜度。

就像for循環一樣,它是迭代,您不會一次又一次地調用相同的方法。 如果您有如下方法調用自身,則將其作為遞歸方法調用:

public int addNumbers(int number) {
    if (number <= 0) {
        return 0;
    }
    return number + addNumbers(number - 1);
}

這不是遞歸的,因為函數不會調用自己

這是:

int fib(int n){
  if(n<2)
    return n;
  return fib(n-1) + fib(n-2);
}

如您所見,方法fib自稱: fib(n-1)fib(n-2)

由於沒有直接或間接的遞歸調用,因此它不是遞歸。 評估是基於較小參數的結果(也稱為動態編程 )以迭代方式進行的。 然而,在該實施方式中,並非所有中間結果都被保留,因此僅需要恆定數量的變量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM