开始
小伙伴们大家好,说到算法大家都不陌生,在我们的面试过程中或多或少都会遇到一些算法相关的内容,很多刚入行的小伙伴对于算法可能比较陌生,这里我会带领大家从最简单的算法题开始上手,从简单的算法与数据结构开始到后面Vue,React中用到的diff算法,任务调度等。让大家彻底掌握前端常用的算法。
接下里我们就进入到我们的实战部分!
首先看题目
题目
写一个函数,输入 n
,求斐波那契(Fibonacci)数列的第 n
项(即 F(N)
)。斐波那契数列的定义如下:
F(0) = 0, F(1) = 1
F(N) = F(N - 1) + F(N - 2), 其中 N > 1.
斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。
答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。
分析
这是力扣上一道非常经典的算法题,首先看题目,写一个函数,输入 n
,求斐波那契数列的第 n
项(即 F(N)
)。首先我们的函数中给定n一个范围 如果我们的n小于等于1那么就直接retuen我们n,上面已经说明了,当我们的n等于0或1的时候就是他本身。
接着往下,题意上面说我们的答案需要取模
这里取模的原因是因为我们可能涉及到的数值会非常大,那么如果我们的数字非常大的话就有可能会溢出。为了防止溢出所以我们就需要取模。
但是这里取模如果数值过小又可能会导致数值重复冲突,所以这里我们需要找一个较大的质数取模,这里就要到了1e9+7
我们首先需要定义一个数组将我们每次求到的值记录下来。
const arr = [0,1]
接着往下我们返回的时候直接返回第n个值就可以了
return arr[n]
解下来我们就要求我们的fn了。
我们先来一个for循环循环我们的n然后i从第二个开始(为什么从第二个开始自己想,前面已经说过了)
for(let i =2;i<=n;i++){
}
接着我们就可以通过我们前两个的值求到我们第三个的值,然后将值取模一下就可以了
arr[i] =arr[i-1] + arr[i-2]
arr[i] %=(1e9+7)
最后执行一下代码
这样我们的斐波那契数列我们就解答完毕了。