第一种:采用递归思想,随着所求的的第n个数逐渐增大,所需的时间就会飞速增长,所以会导致效率很低 。
#include<stdio.h>
int ret(int n)
{
int b;
if (n <= 2)
{
return 1;
}
if (n > 2)
{
b = ret(n - 1) + ret(n - 2);
return b;
}
}
//斐波那契数 1 1 2 3 5 8 13 21 34 55 89
int main()
{
int a, n;
scanf("%d", &n);
a = ret(n);
printf("%d\n", a);
第二种:采用循环的思想;令z=x+y,然后将y的值赋给x,z的值赋给y,如此循环,即可求出第n个斐波那契数的值。效率高
#include<stdio.h>
int ret(int n)
{
int x=1, y=1, z=1,i=1;
while (i <= n-2)
{
z = x + y;// 1 1 2 3 5 8 13
x = y;
y = z; // x y z
i++;
}
return z;
}
int main()
{
int a, n;
scanf("%d", &n);
a = ret(n);
printf("%d\n", a);
}