斐波拉切數列的實現

今天在力扣刷題時遇到了一個斐波拉切數列問題,題目是這樣的:
WeChat959c9da4ad0954b1e0d0b43cdbd32df1.png
看完題目後發現規律是:一、一、二、三、五、八、13。第一發反應就想到了遞歸的實現方案,邊用下面代碼進行提交:編程

var climbStairs = function (n) {
        if (n === 1 || n === 2) return n;
        return climbStairs(n - 1) + climbStairs(n - 2);
    };

可是事與願違,竟然未經過-超出時間限制,而後想了半天,想到了另外一種解決方案,提供參考:學習

var climbStairs = function (n) {
        let arr = [1, 1];
        for (let i = 2; i <= n; i++) {
            arr[i] = arr[i - 1] + arr[i - 2];
        }
        return arr[n];
    };

此次終於經過了,遞歸雖然在編程中很經常使用也很重要,可是有些時候用非遞歸的方法實現,能夠讓代碼有更高的執行效率,可是這樣寫效率還不是特別高,小夥伴有好的方法求留在評論區,共勉學習。spa

相關文章
相關標籤/搜索