1. 程式人生 > >劍指offer:遞迴和非遞迴實現

劍指offer:遞迴和非遞迴實現

題目描述: 大家都知道斐波那契數列,現在要求輸入一個整數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);
    }
};