題目
一只青蛙一次可以跳上1級(jí)臺(tái)階,也可以跳上2級(jí)。求該青蛙跳上一個(gè)n級(jí)的臺(tái)階總共有多少種跳法(先后次序不同算不同的結(jié)果)。
程序核心思想
跟斐波那契是一樣的思想??梢蕴患?jí)也可以跳兩級(jí),就說(shuō)明有兩個(gè)基線條件。
一個(gè)青蛙怎么跳上n級(jí)臺(tái)階呢?可以從n-1級(jí)跳一級(jí)上去(這樣的跳法的次數(shù)跟跳上n-1級(jí)是一樣的,因?yàn)閺膎-1級(jí)跳上n級(jí)只能有一種跳法),或者可以從n-2級(jí)跳兩級(jí)上去(這樣的跳法的次數(shù)跟跳上n-2級(jí)也是一樣的,因?yàn)閺膎-2級(jí)跳上去是一次跳兩級(jí)。那么有人要問(wèn)了,從n-2級(jí)跳到n級(jí)還差兩級(jí)臺(tái)階,為什么不能分兩種方式,一種是一級(jí)一級(jí)跳,一種是一次跳兩級(jí)呢?因?yàn)槿绻患?jí)一級(jí)跳的話,一定會(huì)跟前面從n-1級(jí)跳上去的一種方法重復(fù),所以只能一次跳兩級(jí))。
所以跳上n級(jí)臺(tái)階的辦法就是用跳上n-1臺(tái)階的辦法數(shù)+跳上n-2級(jí)臺(tái)階的辦法數(shù)。
Tips
同斐波那契數(shù)列,http://m.itdecent.cn/p/eaef7b2711fc
代碼
public class Solution {
public int JumpFloor(int target) {
if(target == 1){
return 1;
}else if(target == 2){
return 2;
}else{
return JumpFloor(target - 1) + JumpFloor(target -2);
}
}
}