一隻青蛙一次能夠跳上 1 級臺階,也能夠跳上2 級。求該青蛙跳上一個n 級的臺階總共有多少種跳法java
若是 臺階 n <=0 那麼 跳法就是 0算法
若是 臺階 n ==1 那麼 跳法就只有1種。--------> 1 1spa
若是 臺階 n ==2 那麼跳法就有2種了。----->2 或者1 1code
若是臺階 n>2 不妨這麼想。 從 臺階上 往臺階下跳:遞歸
只考慮當前怎麼跳,相似 貪心算法 吧。圖片
及 從 頂 開始跳 有 2種 選擇,一種是跳1步,一種是跳2步。get
下次跳又是兩個 兩個選擇: 1步 跟 2步。數學
造成遞歸形式。class
f(n-1)+f(n-2) 。方法
公式的意思是 當前個人臺階跳法 是有2中 選擇方法,一種是 1 階 一種是 2階, 若是我將兩種方法 進行一個相加, 那就是 所有的 解法了。
這就有一數學公式:
就是這樣 ,就造成了遞歸方法求解。
public class qinwatiaotaijie { public static void main(String[] args) { System.out.println(JumpFloor(6)); } public static int JumpFloor(int target) { if(target==-1) return 0; else if(target==1) return 1; else if(target==2) return 2; else return JumpFloor(target-1)+JumpFloor(target-2); } }
代碼爲copy 理解是本身的。
----------------------------------------------------------------------
不保證代碼徹底正確,也不保證代碼是最優。
僅僅是根據本身的理解,寫出來直觀的代碼,方便理解。
錯誤請指出,感激涕零!