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

2025-03-13 01:23:44
推荐回答(1个)
回答1:

//fibonacci数列:1 1 2 3 5 8 13 21 34 55...

#include
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 fib_val[i]=fib_val[i-1]+fib_val[i-2];
for(i=0;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 printf("%.0lf ",fibonacci_1(i));
else fibonacci_2(n);
}