斐波那契數列的遞迴與非遞迴解法

2021-10-05 02:08:38 字數 862 閱讀 2917

lintcode第366題

斐波納契數列 中文english 查詢斐波納契數列中第 n 個數。

所謂的斐波納契數列是指:

前2個數是 0 和 1 。 第 i 個數是第 i-1 個數和第i-2 個數的和。 斐波納契數列的前10個數字是:

0, 1, 1, 2, 3, 5, 8, 13, 21, 34 …

樣例 樣例 1: 輸入: 1

輸出: 0

樣例解釋: 返回斐波那契的第乙個數字,是0.

樣例 2: 輸入: 2

輸出: 1 樣例解釋:

返回斐波那契的第二個數字是1.

注意事項 在測試資料中第 n 個斐波那契數不會超過32位帶符號整數的表示範圍

首先想到的是遞迴方法

public

intfibonacci

(int n)

然鵝,

於是發現遞迴方法,並不滿足此題的要求,於是採用非遞迴方法

/**

* @param n: an integer

* @return: an ineger f(n)

*/public

intfibonacci

(int n)

return result;

}

分析:使用低估的時間複雜度會是複雜度會是o(2^n)。因此會超時。

斐波那契數列 遞迴與非遞迴

首先來說下遞迴,遞迴的思想是大事化小。斐波那契數列 1,1,2,3,5,8,13,21.設f n 是第n個斐波那契數,當n 2,斐波那契數都為1 當n 2,那麼第f n 個斐波那契數就等於前兩個斐波那契數之和。遞迴的 實現 includeint fbnq int n int main 輸入10,得到...

007 1 斐波那契數列的非遞迴解法

public class demo06 public static int fibonacci int n 由於使用遞迴解法進行了許多重複的計算,比如 計算f 10 要先計算f 9 和f 8 計算f 9 要先計算f 8 和f 7 僅僅這兩步f 8 就被計算了2次。當計算f 100 時,使用遞迴法求解...

數學 斐波那契數列 遞迴 非遞迴

include pch.h include using std cout using std cin typedef long long ll int fib int n ll fib notrec int n int main return 0 題目給的f 0 1,就這麼寫了 斐波那契第n項 時間...