两种思路:
第一种要注意特判情况和精度问题
#include<stdio.h>
#include<math.h>
int main()
{
long long f=1,a=1,b=1,n,v;
scanf("%lld",&n);
if(n==0)
printf("0.00");
else if(n==1 || n==2)
printf("1.00");
else
{
for(int i=3;i<=n;i++)
{
v=a+b;
a=b;
b=v;
f=v;
}
printf("%lld.00",f);
}
return 0;
}
第二种用通项公式,具体推法看详解大佬的介绍
也要注意精度问题
#include<stdio.h>
#include<math.h>
int main()
{
int n;
double f;
scanf("%d",&n);
f=(pow((1+sqrt(5))/2.0,n)-pow((1-sqrt(5))/2.0,n));
f/=sqrt(5);
printf("%.2lf",f);
return 0;
}