题目:大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。
n<=39。
思路:所谓斐波那契数列是专有名词,就是指1,1,2,3,5,8,13,21……
f(n)=f(n-1)+f(n-2);等价于台阶问题。暴力递归时间不可行,使用动态规划解决。
题目要求的是求出返回第n项。
//求斐波那契数列的第n项:动态规划
public class Solution {
public int Fibonacci(int n) {
//特殊输入:一定要有这个判断
if(n<=0) return 0;
//边界条件:
if(n<=2) return 1;
//定义指针
int f1=1;
int f2=1;
//使用一个变量来保存结果即可,由于每个结果只使用1次因此可以覆盖
int temp=0;
for(int i=3;i<=n;i++){
//移动指针f1和f2
temp=f1+f2;
f1=f2;
f2=temp;
}
return f2;
}
}