分别用递归和非递归方法求取Fibonacci数列。
1个回答
推荐于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);
}
#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);
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询