劍指offer:遞迴和非遞迴實現
阿新 • • 發佈:2018-12-12
題目描述: 大家都知道斐波那契數列,現在要求輸入一個整數n,請你輸出斐波那契數列的第n項(從0開始,第0項為0)。 n<=39 什麼是斐波那契數列
斐波那契數列(Fibonacci sequence),又稱黃金分割數列、因數學家列昂納多·斐波那契(Leonardoda Fibonacci)以兔子繁殖為例子而引入,故又稱為“兔子數列”,指的是這樣一個數列:1、1、2、3、5、8、13、21、34、……在數學上,斐波納契數列以如下被以遞推的方法定義:F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2)(n>=3,n∈N*)在現代物理、準晶體結構、化學等領域,斐波納契數列都有直接的應用,為此,美國數學會從1963年起出版了以《斐波納契數列季刊》為名的一份數學雜誌,用於專門刊載這方面的研究成果。---------來源於百度百科
- 方法一:迴圈實現
程式碼:
class Solution { public: int Fibonacci(int n) { if(n<=2) { if(n==0) { return 0; } return 1; } int a=1; int b=1; int fib=0; while(n>2) { fib=a+b; a=b; b=fib; n--; } return fib; } };
- 方法二:遞迴實現 最後返回的值為1+1+1=3 所以第四個數的值為3
class Solution {
public:
int Fibonacci(int n) {
if(n<=2)
{
if(n==0)
return 0;
return 1;
}
return Fibonacci(n-1)+Fibonacci(n-2);
}
};