题目描述: 一个台阶总共有n级,如果一次可以跳1级,也可以跳2级。求总共有多少总跳法。
分析:
台阶数 1 2 3 4 5
方法数 1 2 3 5 8
最终你会发现规律: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);
}
本人写的比较简陋,具体的分析过程没写,想看的可看链接
网友评论