青蛙跳臺階問題(非變態版)

爲題描述:

一隻青蛙一次能夠跳上 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 理解是本身的。

----------------------------------------------------------------------

不保證代碼徹底正確,也不保證代碼是最優。

僅僅是根據本身的理解,寫出來直觀的代碼,方便理解。

錯誤請指出,感激涕零!

相關文章
相關標籤/搜索