看看递归和迭代在大循环次数下的效率。
C++学生汪,只能看看黑窗口,更深层的道理还请前辈们多多指点,抱拳抱拳~
老生常谈,还是以斐波那契兔子为例,贴代码~
#include <iostream>
#include <atltime.h>
using namespace std;
long long recurse(int num);
long long iterate(int num);
int main()
{
clock_t begin1, end1,begin2,end2;
/* 来看一看两种方法的计算时间*/
cout << "递归基数:40"<< endl;
begin1 = clock();
recurse(40);
end1 = clock();
cout << "递归耗时:" << (double)(end1 - begin1) / CLOCKS_PER_SEC << "s" << endl << endl << endl;
cout << "迭代基数:100000000" << endl;
begin2 = clock();
iterate(100000000);
end2 = clock();
cout << "迭代耗时:" << (double)(end2 - begin2) / CLOCKS_PER_SEC << "s" << endl;
cin.get();
return 0;
}
//递归
long long recurse(int num)
{
if (num == 1 || num == 2)
{
return 1;
}
else
{
return recurse(num - 1) + recurse(num - 2);
}
}
//迭代
long long iterate(int num)
{
if (num == 1 || num == 2)
{
return 1;
}
else
{
long long f1 = 1L;
long long f2 = 1L;
long long f3 = 0;
for (int i = 0; i < num - 2; i++)
{
f3 = f1 + f2;
f1 = f2;
f2 = f3;
}
return f3;
}
}
跑起来看:
看来大循环次数情况下,迭代要优于递归~ End