(1)递归方法代码如下:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int Fib(int n)
{
if (n <= 2)
return 1;
else
return Fib(n - 1)+Fib(n - 2);
}
int main()
{
int n = 0;
scanf("%d",&n);
int ret = Fib(n);
printf("ret = %d\n",ret);
return 0;
}
计算机计算需要时间,这个代码效率很低。重复计算花费时间
运行结果:
(2)迭代方法代码如下
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int Fib(int n)
{
int a = 1;
int b = 1;
int c = 0;
while (n >= 3)
{
c = a + b;
a = b;
b = c;
n--;
}
return c;
}
int main()
{
int n = 0;
scanf("%d",&n);
int ret = Fib(n);
printf("ret = %d\n",ret);
return 0;
}
未考虑溢出问题,但计算量减少,计算速度加快
运行结果: