C++递归问题

来源:百度知道 编辑:UC知道 时间:2024/05/30 17:36:20
用个递归编1 1 2 3 5 8 12 20......得怎么编

源程序代码如下:

// Fibonacci数列第N项求解算法对比程序,VC 6.0 编译通过

#include <iostream.h>

long fib1(int n);
long fib2(int n);

int i=0; //运算次数计数器

//---------------start main()------------
void main()
{
int n=0;

cout<<"Input a int number:"; //显示提示信息
cin>>n; //输入参数 n

cout<<endl<<endl; //显示两个空行

//测试使用递归算法的情况------------------

i=0; //运算次数计数器清零

cout<<"fib1("<<n<<")="<<fib1(n)<<endl;//输出结果
cout<<" Times="<<i<<" (Call Back Times!) "<<endl;//输出计算次数
cout<<endl;

//结果表明运算效率相当差,递归调用的次数居然达到了运算结果数值的2倍-1次。
//在n=20的情况下调用次数竞达到13529次。
//不过从中得到的启示是,是否可以利用这个规律得出通用的计算公式。
//即 计算结果=(递归调用次数+1)/2

//测试使用循环算法的情况------