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

如题所述

//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);
}
温馨提示:内容为网友见解,仅供参考
无其他回答

求解斐波那契数列的时间复杂度,分别用递归和非递归方法
Fibonacci数列 无穷数列1,1,2,3,5,8,13,21,34,55,···,称为Fibonacci数列。它可以递归的定义为 1 n=0 F(n)= 1 n=1 F(n-1)+F(n-2) n>1 第n个Fibonacci数可递归地计算如下:int Fibonacci ( intn){ If(n<=1)return 1;ReturnFibonacci(n-1)+Fibonacci(n-2);}...

递归和非递归算法求解Fibonacci数列
我们可以采用递归以及非递归的方法对其进行求解。下面分别用两种方法求解,并分析算法的时间复杂度。输入 时,输入 时,假设 时 , 正确,当 时, 正确。So the correctness of Algorithm has been proved.对于 来说,每个问题被分成了两个子问题。每分割一次,问题的规模线性减少。对于...

递归优化的斐波那契数列
尾递归:尾调用的一种特殊情况,特别的是尾递归在最后一步 调用自身 。非尾递归Fibonacci序列实现如下:尾递归优化的Fibonacci序列实现如下:

斐波那契数列是什么?
递归终止条件;递归终止时候的处理方法;递归中重复的逻辑提取,缩小问题规模。接下来,我们将利用递归的知识来解决斐波那契数列问题,明确在斐波那契数列求解问题中的递归三要素分别是什么。斐波那契数列的递归终止条件显然易见,通过观察斐波那契数列的定义,我们很容易发现当 n=1 或者 n=2 时,是斐波那契数列...

用递归的方法编写函数求Fibonacci级数,公式为Fn=Fn-1+Fn-2(n>2),F2...
int main() { int n;cout << "请输入一个整数(大于2)" << endl;cin >> n;cout << "求出的Fibonacci级数为" << fibonacci(n) << endl;return 0; \/\/这里把return 3;改成 return 0;} int fibonacci(int n){ \/\/int F1 = 1;\/\/这里去掉这一句 \/\/int F2 = 1;\/\/这里去掉这...

斐波那契数列用什么方法计算?
用递归法计算斐波那契数列 #include<stdio.h> int Fibonacci(int n){ if(n==1||n==2)return 1;else return Fibonacci(n-1)+Fibonacci(n-2);} int main(){ int n;printf("please input n:");scanf("%d",&n);printf("Result:%d\\n",Fibonacci(n));return 0;} ...

斐波那契数列规律
这部很有名的著作主要是一些源自古代中国、印度和希腊的数学问题的汇集,内容涉及整数和分数算法、开方法、二次和三次方程以及不定方程。以如下被以递归的方法定义:从第三项开始,每一项都等于前两项之和,显然这是一个线性递推数列。从第二项开始(构成一个新数列,第一项为1,第二项为2,……)...

数学归纳法证明斐波纳挈数列
显然这是一个线性递推数列。通项公式的推导方法一:利用特征方程 线性递推数列的特征方程为:X^2=X+1 解得 X1=(1+√5)\/2, X2=(1-√5)\/2.则F(n)=C1*X1^n+ C2*X2^n ∵F(1)=F(2)=1 ∴C1*X1 + C2*X2 C1*X1^2 + C2*X2^2 解得C1=1\/√5,C2=-1\/√5 ∴F(n)=(...

用递归的方法编写函数求Fibonacci级数,编出来的程序为什么不能运行呢...
int fn(int n){ int a;\/\/ if ...else...内容要加括号 if (n<=2){ a=1;return a;} else { a=fn(n-1)+fn(n-2);return a;} }

用递归法计算斐波那契数列的第n项
用递归方法计算斐波那契数列的第n项的代码如下:include <stdio.h> int Fibonacci(int n){ if( n == 1 || n == 2) \/\/ 递归结束的条件,求前两项 return 1;else return Fibonacci(n-1)+Fibonacci(n-2); \/\/ 如果是求其它项,先要求出它前面两项,然后做和。} int main(){ int n;p...

相似回答