Fibonacci数列的相关问题

来源:互联网 发布:长春大学网络教学平台 编辑:程序博客网 时间:2024/05/17 22:08

斐波那契数列:0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144

可以使用递归和迭代两种方式

递归中一定有迭代,但是迭代中不一定有递归,大部分可以相互转换.能用迭代的不用递归,递归调用函数,浪费空间,并且递归太深容易造成堆栈的溢出.

/************************************************************************//*  GetExtFibonacci                                                         *//*  输入扩展Fibonacci数列的前2个数字first和second,要得到的数字的序列号num  *//*  输入:扩展Fibonacci数列对应的序号的数字                                 *//************************************************************************/#include<iostream>#include<OJ.h>using namespace std;int GetExtFibonacci(int first , int second, int num){int Fibo[30];int i;cin>>first>>second;Fibo[0]=first;Fibo[1]=second;for(i=2;i<30;i++)Fibo[i]=Fibo[i-1]+Fibo[i-2];   //此为递归,调用自身cin>>num;     //j为小余三十的整数return Fibo[num-1];}

/************************************************************************//*  CalcTotalValueOfExtFibonacci                                        *//*  输入扩展Fibonacci数列的前2个数字first和second,和数字的序列号num    *//*  输出:扩展Fibonacci数列对应的序号的数列之前(包括这个数列本身)的所有的数列之和         *//************************************************************************/int CalcTotalValueOfExtFibonacci(int first , int second, int num){    int Fibo[30];int i,j;int sum=0;cin>>first>>second;Fibo[0]=first;Fibo[1]=second;for(i=2;i<30;i++)Fibo[i]=Fibo[i-1]+Fibo[i-2];//构造该数列cin>>num;for(j=0;j<num;j++)sum+=Fibo[j];              //此为迭代return sum;}


0 0
原创粉丝点击