題目描述: 一個臺階總共有n級,如果一次可以跳1級,也可以跳2級。求總共有多少總跳法。
分析:
臺階數(shù) 1 2 3 4 5
方法數(shù) 1 2 3 5 8
最終你會發(fā)現(xiàn)規(guī)律:f(n) = f(n-1)+f(n-2) ; n>=3時
遞歸方法:
function methodNum(num) {
if(num>0&&num<3){
return num;
}else if(num>=3){
return methodNum(num-1)+methodNum(num-2);
}
}
非遞歸方法:
function methodNum(n) {
if(n<3){
return n;
}
var res = 0;
var resOne = 1;
var resTwo = 2;
for(var i=3;i<=n;i++){
res = resOne+resTwo;
resOne = resTwo;
resTwo = res;
}
return res;
}
還有一種瘋狂跳臺階,是普通跳臺階的升級版。
題目描述:一只青蛙一次可以跳上1級臺階,也可以跳上2級……它也可以跳上n級。求該青蛙跳上一個n級的臺階總共有多少種跳法?
遞歸方法:
function tmp(num) {
if(num===1){
return 1;
}else {
return tmp(num-1)*2;
}
}
非遞歸法:
function tmp(num) {
return Math.pow(2,num-1);
}
本人寫的比較簡陋,具體的分析過程沒寫,想看的可看鏈接