斐波拉切数列的实现

今天在力扣刷题时遇到了一个斐波拉切数列问题,题目是这样的:
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

相关文章
相关标签/搜索