[英]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.