题目主要信息
(1)斐波那契数列公式为:F(n)=F(n−1)+F(n−2)
(2)初始化第1项和第2项为1
(3)求该数列第n项
知识点:动态规划
动态规划算法的基本思想是:将待求解的问题分解成若干个相互联系的子问题,先求解子问题,然后从这些子问题的解得到原问题的解;对于重复出现的子问题,只在第一次遇到的时候对它进行求解,并把答案保存起来,让以后再次遇到时直接引用答案,不必重新求解。动态规划算法将问题的解决方案视为一系列决策的结果。
思路:
斐波那契数列初始化第1项与第2项都是1,则根据公式第0项为0,可以按照斐波那契公式累加到第nnn项。
具体做法:
step 1:低于2项的数列,直接返回n。
step 2:初始化第0项,与第1项分别为0,1.
step 3:从第2项开始,逐渐按照公式累加,并更新相加数始终为下一项的前两项。
求该数列第n项
Java实现代码:
public class Solution {
public int Fibonacci(int n) {
//从0开始,第0项是0,第一项是1
if(n <= 1)
return n;
int res = 0;
int a = 0;
int b = 1;
//因n=2时也为1,初始化的时候把a=0,b=1
for (int i = 2; i <= n; i++){
//第三项开始是前两项的和,然后保留最新的两项,更新数据相加
res = (a + b);
a = b;
b = res;
}
return res;
}
}