方法一:很容易想到的解法是直接使用遞迴。
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...