斐波那契數列的實現方式上的區別

2021-10-04 14:37:27 字數 771 閱讀 3399

斐波那契數列

0

,1,1

,2,3

,5……

其規律為第0個數為0,第1個數為1,接著從第2個數開始其值為前兩個數的和。即fib(n)=fib(n-1)+fib(n-2)。如果實現這個演算法,可能很多人第一想法就是想到使用遞迴。**如下:

//斐波那契數列——遞迴

#include

intfib

(int n)

;int

main()

intfib

(int n)

}

我們來算一下其時間複雜度,假設我們現在計算的是fib(7)。fib(7)=fib(6)+fib(5)。接著後面兩個函式再次遞迴fib(6)=fib(5)+fib(4)以及fib(5)=fib(4)+fib(3)。從這個我們很容易發現期間fib(5)被計算了兩遍,最終這個函式的時間複雜度為o(2^n)。

如果我們計算fib(5)的時候記憶下來,當fib(6)的時候直接呼叫那就好了。我們現在換一種思路。既然從n到n-1到n-2耗費時間過多,那麼我們從底至上來試試。**如下:

//斐波那契數列——自底向下

#include

intfib

(int n)

;int

main()

intfib

(int n)

return m;

}

上面的**自底向上,最終的時間複雜度僅為o(n)。

斐波那契數列 斐波那契數列python實現

斐波那契數列 fibonacci sequence 又稱 分割數列 因數學家列昂納多 斐波那契 leonardoda fibonacci 以兔子繁殖為例子而引入,故又稱為 兔子數列 指的是這樣乙個數列 1 1 2 3 5 8 13 21 34 在數學上,斐波納契數列以如下被以遞推的方法定義 f 1 ...

斐波那契數列的實現

1 1 遞迴版本 存在重複計算,簡單,但是不可取 int fibonacci1 int n 2 迴圈迴圈版本 計算效率高。非遞迴迴圈的版本 int fibonacci2 int n return two 2 思路 這個題目主要很容易想到遞迴函式的做法,但是遞迴在這裡很不實用,會存在很多的重複計算,比...

斐波那契數列的實現

要實現斐波那契數列,首先先要了解什麼是斐波那契數列 0 1,1,2,3,5,8,13 1,1,2,3,5,8,13 從0或1開始這樣的數列稱為斐波那契數列這樣的數列稱為斐波那契數列 我們講下1,1,2,3,5,8,13 該如何計算 通常用 f n 表示,形成的序列稱為斐波那契數列。該數列由 0 和 ...