跳台阶

一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。

思路分析:青蛙跳n 级台阶可以从n-1级台阶跳一级或者从n-2级台阶跳2级到达,假设n级台阶有f(n)种跳法,则f(n)=f(n-1)+f(n-2);

可得出

           { 1, (n=1)

f(n) =  { 2, (n=2)

           { f(n-1)+f(n-2) ,(n>2,n为整数)
可以用数组存储从一级到n级的所有情况,最后返回数组最后一项,通过牺牲空间节约了时间。或者数组只保留两项,这两项从[1,2]一直更新到[f(n-1),f(n)]
实现算法如下:
function jumpFloor(number)
{
    var arr=[1,2];
    var cup;
    var cnt = number - 2;
    if(number<3){
        return arr[number-1];
    }
    else{
        while(cnt>0){
            arr[0] = arr[0] + arr[1];
            cup = arr[1];
            arr[1] = arr[0];
            arr[0] = cup;
            cnt--;
        }
        return arr[1];
    }
}

 

 
posted @ 2018-03-11 15:01  稀算客  阅读(161)  评论(0编辑  收藏  举报