此数列用递归会出现重复取值的问题,那么用动态数据可以解决这个问题,在动态数据上进一步简化,可以使用三个零时数来存储。
class Solution {
public int fib(int n) {
if(n==0){
return 0;
}
if(n==1){
return 1;
}
int [] nums=new int[n+1];
nums[0]=0;
nums[1]=1;
for (int i=2;i<=n;i++){
nums[i]=(nums[i-1]+nums[i-2]);
if(nums[i]>1000000007){
nums[i]=nums[i]-1000000007;
}
}
return nums[n];
}
}