題目一:寫乙個函式,輸入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) + fibonacci(n - 2);
重複計算態度,面試官不會滿意。
面試官期待的使用解法:
long long fibonacci(unsigned int n)
if(n == 0 || n == 1)
return n;
int fn_1 = 0;
int fn_2 = 1;
int tmp;
for(int j = 2; j <= n; j++)
return tmp;
也可以借用陣列:
long long fibonacci(unsigned int n)
int result[n];
result[0] = 0;
result[1] = 1;
for(int i = 2; i <= n; i++)
return result[n - 1];
通項公式:
1 n = 1;
2 n = 2;
f(2) + f(1) n = 3;
所以還是斐波那契數列
題目三:
我們可以用2 x 1的小矩形橫著或者豎著去覆蓋更大的矩形,請問用8個2 x 1的小矩形無重疊的覆蓋乙個2 x 8的大矩形,總共有多少種方法?
f(8)代表8個2 x 1的小矩形。。。。。。。。。
f(7)代表7個2 x 1的小矩形。。。。。。。。。
第乙個小矩形有橫著放和豎著放兩種,所以:
f(8) = f(7) + f(6)
f(7) = f(6) + f(5)
f(2) = f(1) + f(0)
f(1) = 1
f(0) = 1;
面試題9 斐波那契數列
方法一 很容易想到的解法是直接使用遞迴。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 tm...
面試題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...