青蛙跳臺階(java)
阿新 • • 發佈:2018-11-26
一、問題描述
一隻青蛙一次可以跳上1級臺階,也可以跳上2級。求該青蛙跳上一個n級的臺階總共有多少種跳法。
二、演算法分析
因為青蛙一次只能跳上1級臺階或者兩級臺階,所以對於第n級臺階來說,青蛙只能從第n-1級臺階或者第n-2級臺階跳上。
設青蛙跳上第n級臺階有f(n)種跳法,則
f(n) = f(n-1)+f(n-2),n>2
f(2) = 2
f(1) = 1
三、演算法設計
兩種解題方案,一,遞迴法;二,迭代法
根據遞推公式進行求解
四、編碼實現
一、遞迴法
public int jumpFloor(int target){ if(target <= 0) return 0; if(target == 1) return 1; if(target == 2) return 2; return jumpFloor(target-1)+jumpFloor(target-2); }
二、迭代法
public int jumpFloor1(int target) { if(target <= 0) return 0; if(target == 1) return 1; if(target == 2) return 2; int one = 1; int two = 2; int result = 0; for(int i=2; i<target; i++){ result = one + two; one = two; two = target; } return result; }