由題目可知,青蛙一次能夠跳一階或者兩階。假設臺階爲N階,咱們能夠這樣想:html
假設青蛙最後一跳爲一階,此時預留出最後的一階,是否是青蛙跳(N-1)階與跳N階,可能出現的方法同樣呢(確定同樣啦,哈哈)spa
假設青蛙最後一跳爲二階,此時預留出最後的兩階,是否是青蛙跳(N-2)階與跳N階,可能出現的方法同樣呢(也是同樣哦,有點繞嗎?)code
由於青蛙的極限就是一次跳2階,因此不可能出現最後預留三階的狀況,所以,該題目實際上是一個斐波那契數列的應用而已,徹底能夠想象成斐波那契數列來作。所以,即出現了遞歸與循環兩種解題方法。固然,效率咱們以前在斐波那契數列討論過了,因此,這次再也不繼續討論(記住循環更好就是了)。htm
方法一:低效的遞歸法blog
class Solution { public int jumpFloor(int number){ if(number==1||number==2) { return number; } else { return jumpFloor(number-1)+jumpFloor(number-2); } } }
方法二:高效的循環法遞歸
class Solution { public int jumpFloor(int number) { // write code here int x = 1; int y = 2; int n = 0; if(number<3) { return number; } else { for (int i = 3;i<=number;i++) { n = x+y; x = y; y = n; } return n; } } }