面試題9 斐波那契數列

2021-06-16 19:16:16 字數 846 閱讀 5169

方法一:很容易想到的解法是直接使用遞迴。

c++**:

#include "stdafx.h"

#include using namespace std;

long long fibonacci(unsigned int n)

if (n == 1)

return fibonacci(n-1) + fibonacci(n-2);

}int _tmain(int argc, _tchar* argv)

缺點:很顯然效率很低,因為存在重複計算的問題。

方法二:改進方法是將已經得到的數列中間項儲存起來,下次使用時直接查詢即可,避免重複計算。

c++**:

#include "stdafx.h"

#include using namespace std;

long long fibonacci(unsigned int n)

if (n == 1)

long long one = 0;

long long two = 1;

long long result = 0;

for (unsigned int i=2; i<=n; i++)

return result;

}int _tmain(int argc, _tchar* argv)

面試題9 斐波那契數列

題目一 寫乙個函式,輸入n,求斐波那契數列的第n項,斐波那契數列的定義如下 0 n 0 f n 1 n 1 f n 1 f n 2 n 1 遞迴 long long fibonacci unsigned int n if n 0 n 1 return n return fibonacci n 1 f...

面試題9 斐波那契數列

面試題9 題目 寫乙個函式,輸入n,求斐波那契數列的第n項。很多教科書中的解法 long long fibonacci solution1 unsigned int n 這是從第n項向前計算的方法,很多計算量實際上是重複的。long long fibonacci solution2 unsigned...

面試題9 斐波那契數列

書中說遞迴法比迴圈法更慢,實測速度差不多一樣,不知道怎麼回事。很簡單,直接上 吧 coding utf 8 遞迴計算斐波那契數列 def fibonaccirecursion n if n 0 return false elif n 0 return 0 else fibonaccin fibona...