请帮忙看一下这个程序
用编译时间换取执行时间
用了两个编译器都无法通过
#include <iostream.h>
#include <time.h>
#define FibT(n) Fib <n> ::var
template <> struct Fib <0> {enum {var=0};};
template <> struct Fib <1> {enum {var=1};};
template <unsigned int N>
struct Fib{
enum
{
var=Fib <N-1> ::var+Fib <N-2> ::var
};
};
unsigned int RecursiveFib(unsigned int m)
{
if(m <=1)
return m;
return RecursiveFib(m-1)+RecursiveFib(m-2);
}
void main()
{
unsigned int temp;
clock_t start,finish;
double duration;
start=clock();
temp=FibT(30);
finish=clock();
duration=(double)(finish-start)/CLOCKS_PER_SEC;
cout < <temp < <endl;
cout < <duration < <endl;
return;
}
请问要如何修改
[解决办法]
哪两个编译器 不是VC6.0吧?
用G++看下
[解决办法]
template <unsigned int N>
struct Fib{
enum
{
var=Fib <N-1> ::var+Fib <N-2> ::var
};
};
template <> struct Fib <0> {enum {var=0};};
template <> struct Fib <1> {enum {var=1};};
特化必须在模板【前置】声明之后。注意基本功呀。