Page 51, 自立题十八

来源:互联网 发布:知乎实木家具推荐 编辑:程序博客网 时间:2024/04/29 06:59

这道题,反正我感觉挺难的。。。三重循环简单,二重循环就有点麻烦了,一重循环我是想了挺久的才想出来。。。


【题目】

对于n=2, 5, 8, 11,...,20,23,分别求出E(n)值并输出。要求按三种方式(三重循环,二重循环,一重循环)分别进行编程求解,并对他们各自的运行速度及算法优劣性进行比较。

【提示】

提示我就不打了,自己看书。。。好像我当时为了挑战一下没看提示。。。刚刚看了一下感觉一重循环和书上的想法不一样。

【代码】

/************ * 2013.10.23 * P51 自立题十八 * 练习循环 ************/#include <iostream>#include <time.h>#include <windows.h>using namespace std;int main(){    int i, j, k, Down=1, Num=2;    double En = 0;    clock_t start, time1, time2,time3;    //===========三重循环==========    cout<<"--------------------"<<endl;    start = clock();    for(i=2;i<=23;i+=3)    {        for(j=1;j<=i;j++)        {            for(k=1;k<=j;k++)            {                Down *= k;            }            En += (1.0 / Down);            Down = 1;        }        cout<<En<<endl;        En = 0;    }    time1 = clock();    cout<<"--------------------"<<endl;    cout<<"三重循环执行时间"<<time1 - start<<"毫秒"<<endl;    time1 = clock();    cout<<"--------------------"<<endl;    //===========两重循环==========    for(i=2;i<=23;i+=3)    {        for(j=1;j<=i;j++)        {            Down *= j;            En += 1.0 / Down;        }        cout<<En<<endl;        En = 0;        Down = 1;    }    time2 = clock();    cout<<"--------------------"<<endl;    cout<<"两重循环执行时间"<<time2 - time1<<"毫秒"<<endl;    cout<<"--------------------"<<endl;    time2 = clock();    //===========一重循环==========    for(i=2;i<=23;i+=3)    {        if(i == 2)        {            En += (1.0 / 1 + 1.0 / 2);        }else{            Num *= (i - 2);            En += (1.0 / Num);            Num *= (i - 1);            En += (1.0 / Num);            Num *= i;            En += (1.0 / Num);        }        cout<<En<<endl;    }    time3 = clock();    cout<<"--------------------"<<endl;    cout<<"一重循环执行时间"<<time3 - time2<<"毫秒"<<endl;    cout<<"--------------------"<<endl;        system("pause");    return 0;}/********** 7sDream* 21:38*********/

【结果】




一重循环有点难想出来,要多来看看复习一下。
0 0
原创粉丝点击