facttest.cpp

来自「C++&datastructure书籍源码,以前外教提供现在与大家共享」· C++ 代码 · 共 57 行

CPP
57
字号
#include <iostream>using namespace std;#include "ctimer.h"#include "prompt.h"#include "bigint.h"BigInt RecFactorial(int num)// precondition: 0 <= num// postcondition: returns num! (num factorial){    if (0 == num)    {   return 1;    }    else    {   return num * RecFactorial(num-1);    }}BigInt Factorial(int num)// precondition: 0 <= num// postcondition: returns num! (num factorial)     {    BigInt product = 1;    int count;    for(count=1; count <= num; count++)    {   product *= count;    }    return product;}int main(){    CTimer rtimer,itimer;    long j,k;    BigInt rval,ival;    long iters = PromptRange("enter # of iterations",1L,1000000L);    int  limit = PromptRange("upper limit on factorial",10,100);        for(k=0; k < iters; k++)    // compute factorials specified # of times    {   for(j=0; j <= limit; j++)        {   rtimer.Start();                   // time recursive version            rval = RecFactorial(j);            rtimer.Stop();            itimer.Start();                   // time iterative version            ival = Factorial(j);            itimer.Stop();             if (rval != ival)                 // note any differences            {   cout << "calls differ for " << j << endl;                cout << "recursive = " << rval << " iterative = " << ival << endl;            }        }    }    cout << iters << " recursive trials " << rtimer.CumulativeTime() << endl;    cout << iters << " iterative trials " << itimer.CumulativeTime() << endl;    return 0;    }

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?