每日刷題_牛客_跳臺階

題目描述

一隻青蛙一次可以跳上1級臺階,也可以跳上2級。求該青蛙跳上一個n級的臺階總共有多少種跳法(先後次序不同算不同的結果)。

主要思路

如果你剛看完上到的斐波那契數列,再看這道題是不是有些熟悉。沒有?高數中有個很牛皮的找規律方法。相信你一定知道它是啥 。【數學歸納】
但大致看一下
首先看跳第一級。只要一種方法
跳第二級有。2種
跳第三級呢。先看是怎麼跳上第三級的。它可是是從3-1級跳的,也可能是從3-2級跳的。跳3-1級也就是第二級的方法已經有了,同理跳到3-2級也就是第一級的方式也就用了。(只要我們有點概率論的基礎我們就知道這裏要做加法操作)即跳第三級的方式=第一級的方式+跳第二級的方式

那麼第i級呢 同理(i-1)的方式+(i-2)的方式

這不就是斐波那契數列的算法嗎
不同點在於。斐波那契數列的第二項=第零項+第一項=1
這裏的可不是。這裏跳到第二級的方式是2
修改一下即可

我的代碼

//方法一。重新設置n=2的值
        function jumpFloor(number) {
            // write code here
            if (number == 0) {
                return 0;
            }
            if (number == 1) {
                return 1;
            }
            if (number == 2) {
                return 2;
            }
            let arr = [];
            arr[0] = 0;
            arr[1] = 1;
            arr[2] = 2;
            for (let i = 3; i <= number; i++) {
                arr[i] = arr[i - 1] + arr[i - 2]
            }


            return arr[arr.length - 1];

        }
        //方法2:找其與斐波那契數列的關係。發現可以不用改n=2的值。斐波那契數列索引後移一位即可
function jumpFloor(number)
{
    // write code here
    if (number == 0) {
                return 0;
            }
            if (number == 1) {
                return 1;
            }
            let arr = [];
            arr[0] = 0;
            arr[1] = 1;
            for (let i = 2; i <= number+1; i++) {
                arr[i] = arr[i - 1] + arr[i - 2]
            }
            

            return arr[arr.length-1];

        }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章