二刷--斐波那契数列

简介: 二刷--斐波那契数列

这是博主第二次刷这个题目,经典题目的经典算法,斐波那契数列可以采用递归来进行求解,但是如果要求的数字比较大的情况下,会出现重复计算的问题,复杂度比较高,所以我们本次采用的是非递归的方法,极大的降低了时间和空间复杂度。

题目描述

image.png

解题思路

  • 如果目标值小于等于1,则直接返回。
  • 如果目标值大于等于1,则定义两个临时变量保存前两个数字。
  • 通过循环的方法不断更新这两个值,即可求出最终的解。

AC代码

由于leetcode上需要进行取余计算,我们只需要给结果去个余即可。

var fib = function (n) {
    if (n <= 1) return n;
    let prev1 = 1;
    let prev2 = 0;
    let result = 0;
    for (let i = 2; i <= n; i++) {
        result = (prev1 + prev2) % 1000000007;
        prev2 = prev1;
        prev1 = result;
    }
    return result;
};
复制代码

题目反思

  • 学会使用非递归的方法求解斐波那契数列来降低算法的复杂度。
相关文章
|
7月前
|
算法 C++
C++快速幂(递归)
C++快速幂(递归)
|
8月前
|
人工智能
poj 2299 Ultra-QuickSort 求逆序数 树状数组解法
所谓离散化,我们的了解就是对原数组排序,然后用所在位置的下标代替原数,这样我们就可以把数据范围缩小到1-500000,这个数组是开的下的。
23 0
|
8月前
poj 1088 记忆化搜索||动态规划
记忆化搜索也也是采用递归深搜的对数据进行搜索,但不同于直接深搜的方式,记忆化搜索是在每次搜索时将得到的结果保存下来,避免了重复计算,这就是所谓的记忆化。记忆化应该是属于动态规划。
27 0
|
10月前
华华教月月做数学 两种方法: (快速幂+快速乘) (__int128+快速幂)
华华教月月做数学 两种方法: (快速幂+快速乘) (__int128+快速幂)
36 0
Fibonacci斐波那契数列的几种题型
Fibonacci斐波那契数列的几种题型
78 0
|
机器学习/深度学习 算法
斐波那契数列的四种解法
斐波那契数列的四种解法
斐波那契数列的四种解法
|
前端开发 程序员 测试技术
斐波那契数列的多种解法
斐波那契数列的多种解法
斐波那契数列的多种解法
|
存储
二刷--两数相加
二刷--两数相加
95 0
二刷--两数相加

热门文章

最新文章