斐波那契數列 C 的三種實現方式(動規入門)

2021-10-18 08:00:19 字數 1369 閱讀 5627

問題描述:

斐波那契數列(fibonacci sequence),又稱**分割數列、因數學家萊昂納多·斐波那契(leonardoda fibonacci)以兔子繁殖為例子而引入,故又稱為「兔子數列」。

指的是這樣乙個數列:0、1、1、2、3、5、8、13、21、34、……

在數學上,斐波那契數列以如下被以遞推的方法定義:

f(0)=0,f(1)=1, f(n)=f(n - 1)+f(n - 2)(n ≥ 2,n ∈ n*)

求斐波那契數列中的第n個對應的值

//斐波那契    遞迴 

#include

#include

//控制輸出

using

namespace std;

long

long

intfib

(long

long

int n)

else

}int

main()

return0;

}

採用逆序的方法計算:用兩個long long型,從第0項和第1項開始往後計算,不斷迴圈迴圈即可解決

//斐波那契 迭代 未儲存版 

#include

#include

//控制輸出

這樣時間複雜度即降為o(n)

解決方法1:

開闢全域性陣列儲存,每次呼叫時判斷是否已經呼叫過(即該位置的斐波那契數是否已經計算出),可以減少不必要的呼叫

//斐波那契 動規2.0(現學現賣)

#include

#include

using

namespace std;

long

long

int fib[50]

=;//開闢全域性陣列儲存,以0表示未呼叫過

//以0可以作為標識的原因是n==0時可以直接返回0,不存在歧義

long

long

intfib

(int n)

else

return fib[n]

;//返回結果 }}

實現斐波那契數列的三種方式

首先說說斐波那契數列 從文字上說,斐波那契數列由0和1開始,之後的斐波那契係數就由之前的兩數相加,數列形式如下 0,1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,在數學上,是以遞迴的方法來定義 f 0 0 f 1 1 f n f n...

斐波那契數列的三種實現方法

斐波那契數列是學習演算法碰到的,以自己當前的知識面還不足以想到通過公升高乙個維度來降低演算法的時間複雜度.昨天再看劍指offer的時候,在面試題9中提到了三種實現計算斐波那契數列的方法.在這裡實現三種做法貌似還有乙個o 1 的計算方法,也就是斐波那契數列是可以直接推到出來的.1.常規的遞迴演算法 d...

斐波那契數列的三種解法

寫乙個函式,輸入n,求斐波那契數列的第n項。斐波那契數列的定義如下 課本的上為了講解遞迴演算法,經常用這個例子。讓我們看一下它的實現 package algorithm public class fibonacci recursion public static void main string a...