斐波那契数:如1、1、2、3、5、8、13、21、34、……从第三项开始,每一项都等于前两项之和。
-
迭代算法(效率高)
#include <stdio.h>
int Fib(int n)
{
int a = 1;
int b = 1;
int c = 1;//当n<3时
while (n >= 3)
{
c = a + b;
a = b;
b = c;
n--;
}
printf("%d ", c);
}
int main()
{
int n = 0;
scanf("%d", &n);
Fib(n);
return 0;
}
-
递归算法(效率低)
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 c=Fib(n);
printf("%d ",c);
return 0;
}
- 原因:
整个递归过程进行了大量的重复运算。