我写了如下程序,运行怎么没有反应,难道FOR循环有时间限制?
double GetMax(int *array, DWORD size)
{
    double maxG = 0, currentG;
    for(int h1=0; h1<360; h1++)
    {
       for(int h2=0; h2>h1; h2--)
       {
           currentG = 0;
           for(DWORD i=0; i<size; i++)
           {
               if(h1 < array[i] && h2 > array[i])
               {
                  currentG += array[i];
               }
            }
            if(currentG > maxG)
            {
               maxG = currentG;
             }
       }
     }
     return maxG;
}调用如上函数,当数组的长度为1024*1024,程序就没有响应了!
哪位大虾知道是怎么回事?

解决方案 »

  1.   

    你想一下要循环多久了?
    如果需要的时间太长,最好弄在工作线程里。代码忠实的执行着你的意图,不要说是for的bug,要说bug,那只能怪你自己了。
      

  2.   

    for(int h2=0; h2>h1; h2--)
    我奇怪的就是这个h2会大于h1吗?
      

  3.   

    粗略的看了一下,目的很不明确,所以决定不折腾我的大脑,放弃再继续看....
    相信for语句经历了这么多风风雨雨,坚定程序不容置疑,所以只有一个可能,你的程序有问题,
    解决方法:重新调整思路
      

  4.   

    照楼主的写法h2不可能大于h1啊所以for(int h2=0; h2>h1; h2--)根本没执行
      

  5.   

    不好意思,上面的程序有一个地方敲错了。应该是:
    for(int  h2=360;  h2  >h1;  h2--)简化一下,就是:
    int count=0;
    for(double i=0; i<360*360*1024*1024; i++)
    {
        count++;
        if(count > 10000) count = 0;
    }上述程序一运行就死在那里了,没有相应,不信大家可以试试.
    本人电脑:CPU P4 2.0G, RAM 512M,应该不算很差吧??WINDOWS为事件所分配的时间片达到了极限??
      

  6.   

    很显然,你的cpu不够快而已。另外这种问题,一个简单的调试就可以搞定,也值得发个帖子问人?楼主未免依赖性太强了吧。
      

  7.   

    我们看中的是lz的那个100分
    hoho
      

  8.   

    360*360*1024*1024 = 1111110100100000000000000000000000000 < 2^38
    1G = 2^30,没错吧?
    2^38 = 2^30 * 2^8 = 256G,  没错吧?
    2G的CPU,一秒钟运算2G次,没错吧?
    总共也就需要128秒,而已!!!早上运行,中午再看看?????请诸位先想清楚再说话,不是我脑子进水,而是你们根本就没有做过复杂的问题!!
      

  9.   

    2G的CPU,一秒钟运算2G次,没错吧?
    总共也就需要128秒,而已!!!-_-//
    这个……
    你的CPU一秒钟只能做2G次运算,而不是你所想的2G次循环
    而且你的操作系统还要把这2G次分给其它进程,又不是独占式
      

  10.   

    总共也就需要128秒,而已!!!
    请诸位先想清楚再说话,不是我脑子进水,而是你们根本就没有做过复杂的问题!!
    -------------------------------
    LZ的什么理论呀?
    反汇编一下你的循环体看看有多少条汇编指令噢~~
    一条汇编指令执行需要消耗好几个时钟周期的.
    另外你用的系统又不是你独占CPU的,是分时的~~
    XP一般有27个进程,线程数却有300个之多,假设均分的情况,CPU运行1秒,你的程序也就实际运行了1/300秒而已..(这里还没考虑优先级的问题)
    不是我们没做过那么复杂的问题,是你思想太单纯,写程序是要考虑好多东西的.LZ可以把循环缩小一点,然后放一个计时器测一下时间就明白了..额~~