面試題9 斐波那契數列

2021-07-02 07:24:54 字數 1145 閱讀 6174

題目一:寫乙個函式,輸入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...