**跳台階:乙隻青蛙一次可以跳上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 二叉樹 通用容器類,面試時考察...