int fib(int n)
{
if (n <= 2)
{
return 1;
}
else
{
return fib(n - 1) + fib(n - 2);
}
}
void main()
{
int ret;
printf("请输入一个数:>");
int num;
scanf("%d",&num);
ret = fib(num);
printf("%d",ret);
}
上面这种是采用递归的方式
下面这种是用循环
int fib(int n)
{
int a = 1;
int b = 1;
int c= 1;
while (n > 2)
{
c = a + b;
a=b;
b = c;
n--;
}
return c;
}
void main()
{
int ret;
printf("请输入一个数:>");
int num;
scanf("%d",&num);
ret = fib(num);
printf("%d",ret);
}
采用循环的方式计算速度会快很多
下面是计算斐波那契第n项,与打印斐波那契第15项。
int feibo(int n)
{
if (n == 1 || n == 2)
{
return 1;
}
else if (n >2)
{
return feibo(n - 1) + feibo(n-2);
}
}
void main()
{
int n=0;
printf("请输入斐波那契第n项:>");
scanf("%d",&n);
printf("第n项为%d\n",feibo(n));
int j = 1;
while (j <= 15)
{
printf("%4d",feibo(j));
j++;
}
}