第一种方法 计算量较大 n稍大计算机运行时间就会边长
#include <stdio.h>
int asd(int a)
{
if (a <= 2)
return 1;
else
return asd(a - 1) + asd(a - 2); /*根据斐波那契数列的性质每一个数都是前两个数之和
所以我们可以倒着求出*/
}
int main()
{
int a;
int b;
printf("请输入一个数:");
scanf("%d", &a);
b = asd(a);
printf("第n个斐波那契数为%d", b);
return 0;
}
第二种减少计算量,即使是较大的数也能很快的求出来
#include <stdio.h>
int asd(int x)
{
int a=1;
int b = 1;
int c = 1; //令c等于1 假如输入的n为1或2 也能返回正确的数值
while (x > 2)
{
c = a + b;
a = b;
b = c;
x--;
}
return c;
}
int main()
{
int a;
int b;
printf("请输入一个数:");
scanf("%d", &a);
b = asd(a);
printf("第n个斐波那契数为%d", b);
return 0;
}