遞迴和迴圈 面試題7

2021-07-09 11:40:07 字數 981 閱讀 8508

**跳台階:乙隻青蛙一次可以跳上1級台階,也可以跳上2級……它也可以跳上n級。求該青蛙跳上乙個n級的台階總共有多少種跳法。

分析思路:

同一次跳1級,一次跳2級類似,先分析n=3,n=4時,發現n=4時=f(3)+f(2)+f(1)+1

/**

* 乙隻青蛙一次可以跳上1級台階,也可以跳上2級……它也可以跳上n級。求該青蛙跳上乙個n級的台階總共有多少種跳法。

* * @param array

* @return

*/public int jumpfloorii(int target)

if (target == 1)

if (target == 2)

int record = new int[target];

record[0] = 1;

record[1] = 2;

for (int i = 2; i < target; i++)

record[i] += 1;

} return record[target - 1];

}

該題還可以更簡單:

public int jumpflooriii(int target) 

if (target == 1)

if (target == 2)

int record = new int[target];

record[0] = 1;

record[1] = 2;

for (int i = 2; i < target; i++)

return record[target - 1];

}

上述演算法是根據

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

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

兩個式子相減得

f(n)=f(n-1)*2

面試題9 遞迴和非遞迴

1.題目 編寫函式,計算斐波拉契數列的第n項。定義如圖 分析 這是乙個經典的問題,很多人都會用遞迴的方法去解決,但是實際的效果真的可以用嗎,如果採用遞迴的方法,在求斐波拉契數列第n項的過程中,不僅會存在重複計算的項,而且而且函式呼叫自身也是有時間和空間消耗的,涉及到往棧中壓入資料和彈出資料,這將消耗...

java遞迴面試題

題目1 斐波那契數列 一列數的規則如下 1 1 2 3 5 8 13 21 34.求第30位數是多少,用遞迴演算法實現。public static int getfabonaccisequencebynum int num logic return getfabonaccisequencebynum...

面試題系列(7)

84.將文字轉為數字 atoi,atof 將數字轉為文字 sprintf 86.加強記憶 mfc clist carray cstring cmap 雜湊表 mfc集合類 資料結構 演算法流程 c stl標準模板庫 std list vector string map 二叉樹 通用容器類,面試時考察...