分别用递归和非递归方法求取Fibonacci数列。

 我来答
匿名用户
推荐于2018-03-28
展开全部
//fibonacci数列:1 1 2 3 5 8 13 21 34 55...

#include<stdio.h>
double fib_val[100]={0};

double fibonacci_1(int n)//递归,计算时间长,n最好不超过30
{
if(n<2)
{
return 1.0;
}
return fibonacci_1(n-1)+fibonacci_1(n-2);
}

void fibonacci_2(int n)//非递归
{
int i;
fib_val[0]=1.0;
fib_val[1]=1.0;
for(i=2;i<n;i++)
fib_val[i]=fib_val[i-1]+fib_val[i-2];
for(i=0;i<n;i++)
printf("%.0lf ",fib_val[i]);
}

void main(void)
{
int i,n,k;
printf("\n请输入一个2~100之间的整数:\n");
scanf("%d",&n);
printf("\n请选择 1.递归 2.非递归:\n");
scanf("%d",&k);
if(k==1)
for(i=0;i<n;i++)
printf("%.0lf ",fibonacci_1(i));
else fibonacci_2(n);
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式