代码如下:
#include<stdio.h>
long long int fib(int k)
{
if (k == 1 || k == 2)
return 1;
long long int fib1=1;
long long int fib2=1;
long long int fib3=0;
for(int i=3;i<=k;i++)
{
fib3=fib1+fib2;
fib2=fib1;
fib1=fib3;
}
return fib3;
}
int main()
{
int k;
scanf("%d",&k);
printf("%lld",fib(k));
}
此方法关键在于for循环中的结构,循环运算fib3的值,即k≥3时的fib(k)。
观察输入值k的范围可知,输出值中最大值已经超过了int的范围32767,故采用范围更大的long long int。
循环法相较于递归法,用时更短,效率更高。