第一种方法 按照公式套 都用double类型保证高精度
pow是数学函数里的求次方函数,sqrt是开根函数
#include<stdio.h>
#include<math.h>
int main(){
double n,result;
while(scanf("%lf",&n)!=EOF){
result=(pow(((1+sqrt(5))/2),n)-pow(((1-sqrt(5))/2),n))/sqrt(5);
printf("%.2lf",result);
}
return 0;
}
第二种方法,找斐波那契数列的递推规律
先定义前三项的数据,根据数列的特点,第三项开始等于前两项的和。
int main()
{
double f[50];
int n,i;
f[0]=0;
f[1]=1;
f[2]=1; //递归边界条件
scanf("%d",&n);
for(i=3;i<=n;i++){
f[i]=f[i-1]+f[i-2];//开始使用斐波那契数列
}
printf("%0.2f",f[n]); //输出,保留两位小数
return 0;
}