知识点
求斐波那契数列的三种方法
1,1,2,3,5,8,13
出错代码
因为输入是不超过100000的正整数,用递归法太容易时间超限了
#include<iostream>
using namespace std;
//1,1,2,3,5,8,13
long long f(long long n){
if(n==1||n==2) return 1;
else return f(n-1)+f(n-2);
}
int main(){
long long n; cin>>n;
long long a=f(n);
cout<<a%10<<endl;
}
参考代码
#include<iostream>
using namespace std;
//1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597
//1,1,2,3,5,8,3,1,4,5,9,4,3,7,0,7,7
int n;
long long a[1100000];
int main(){
cin>>n;
if(n==1||n==2){
cout<<1<<endl;
return 0;
}
long long sum=0;
a[1]=1;a[2]=1;
for(int i=3;i<=n;i++){
a[i]=(a[i-1]+a[i-2])%10;
}
cout<<a[n]<<endl;
return 0;
}