从效率上讲第二种好于第一种,因为不用循环判断但是从功能上,如果condition是根据dosomething和doanything变化的
就只能用第一种了

解决方案 »

  1.   


    因为第二种只需执行一次if-else,而第一种需执行N次if-else for语句执行情况都是一样的。 
      

  2.   


    如果condition是根据i变化的也只能用第一种了
      

  3.   

    if condition is not changed by dosomething and doanything. the second one is best.
    otherwise,both are different result.
      

  4.   

    关键是看看condition有没有变化啊,如果condition没有变化,肯定是第二种.如果condition有变化,那么第二种方法根本就不对啊.
      

  5.   

    算法一: for(int i=0;i<N;i++){
        if(condition){
            dosomething;
        }
        else{
            doanything;
        }
    }
    算法2
    if(condition){
        for(int i=0;i<N;i++){
           dosomething;
        }
    }
    else{
        for(int i=0;i<N;i++){
            doanything;
        }
    }
    我来晚了
    如果condition不变,两者算法复杂度一样。
    不过不应该仅仅在算法效率上比较,最重要的是算法1和算法2有可能得到的是根本不同的两个结果,出现这中情况的条件是。
    在方法2中,dosomething会改变condition。