斐波那契数列: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;
}