斐波拉契數列 演變

2021-07-16 06:38:25 字數 928 閱讀 7767

面試中碰到類似的演算法題有如下:

爬樓梯,從第一層到第十層,每次允許一次性爬1-3層,則從第1層到第10 層總共有多少種方法,並將相應的所有步數列舉出來。

解法: 設爬的層數為n,需要的總共的方法數歸納為方法f(n)

先歸納下方法:

n =1:f(1) = 1;

n=2; f(2) = 2; 1+1 2

n=3; f(3) = 4; 1+2 1+1+1 2+1 3

n=4; f(4) = 7;

1+1+1+1 1+1+2 1+2+1 2+1+1 1+3 3+1 2+2

依次類推

n=5;f(5) = 13; f(4)+f(3)+f(2)

n=6; f(6) = 24; f(5)+f(4)+f(3)

…..類推得:

n>=4時

f(n)=f(n-1)+f(n-2)+f(n-3);

當 0

int fun(int nfloors)else

if(nfloors == 2)else

if(nfloors == 3)

return

fun(nfloors-1)+fun(nfloors-2)+\

fun(nfloors-3);

}

已經能得出爬到第n層所需要的總方法數,接下來要處理的是如何將相應的步數列舉出來

void fun1(int nsum,vector

vec)

}// 輸出所有的步數

for(ite = vec.begin(); ite != vec.end();ite++)

}for(int i =0; i < nsum;i++)

}

執行截圖,274代表從第1層爬到10層,每次只允許爬1,2,3層 後所有的步驟

斐波拉契數列

斐波拉契數列 1 1 2 3 5 8 13 21 34.其中每乙個數字都是前兩個數字的和。遞迴計算 long fibonacci int n 非遞迴計算 long fibonacci int n return result 這個函式的遞迴實現使用了雙重遞迴 double recursion 函式對本...

斐波拉契數列

編寫彙編程序列印1 1000的斐波拉契數列 原始碼assume cs code,ss stack,ds data data segment fibo dw 0,1,64 dup 0 str db the fibo list is 0ah,0dh,data ends stack segment db ...

斐波拉契數列

斐波拉契數列 這個數列從第三項開始,每一項都等於前兩項之和。已知斐波拉契數列的前兩項都是1,我們定義求斐波拉契數列的第n項 n 50 的函式為fbnq,請補充完成對fbnq函式的定義。輸入格式 共一行,為乙個正整數。輸出格式 共一行,為乙個正整數。輸入樣例 7輸出樣例 13 斐波拉契數列 def f...