public int calc(int a,int b){
if(a<=0||b<=0){
return 0;
}
while(a!=b){
if(a>b){
a-=b;
}else{
b-=a;
}
}
return a;
}怎樣把循環減到最少!
效率最高!

解决方案 »

  1.   

    public int calc(int a,int b){
            if(a<=0||b<=0){
                return 0;
            }
            while(a!=b&&a*b!=0){
                if(a>b){
                    a=a/b;
                }else{
                    b=a/a;
                }
            }
            return a;
        }
      

  2.   

    纠正一下
    public int calc(int a,int b){ 
            if(a <=0||b <=0){ 
                return 0; 
            } 
            while(a!=b&&a*b!=0){ 
                if(a>b){ 
                    a=a/b; 
                }else{ 
                    b=b/a; 
                } 
            } 
            return a; 
        }
      

  3.   


    public int calc(int a,int b)
    {
      if(a<=0||b<=0)
      {
        return 0;
      }
      else if(a==b)
      {
        return a;
      }
      if(a<b)
      {
        int mid = a;
        a = b;
        b = mid;
      }
      return a%b==0?b:a%b
    }似乎有点奇怪,不过按结果这么应该没错吧( ̄︶ ̄)↗ 
      

  4.   

    错了,呵呵,把%弄成/了
    public int calc(int a,int b){ 
            if(a <=0||b <=0){ 
                return 0; 
            } 
            while(a!=b&&a*b!=0){ 
                if(a>b){ 
                    a=a%b; 
                }else{ 
                    b=b%a; 
                } 
            } 
            return a; 
        }
    不过似乎那个else没用阿,是不是应该这样:
    public int calc(int a,int b){ 
            if(a <=0||b <=0){ 
                return 0; 
            } 
            while(a!=b&&a*b!=0){ 
                if(a>b){ 
                    a=a%b; 
                }else{ 
                    b=b%a;
                    a=a+b;b=a-b;a=a-b;
                } 
            } 
            return a; 
        }
      

  5.   

    答:参考代码:public int calc(int a,int b){
            if(a<=0||b<=0){
                return 0;
            }
            while(a!=b)
            {
                a %= b;
                if(a==0) return b;
                b %= a;
                if(b==0) return a;
            }
            return a;
        }
      

  6.   


    pulbic int calc(int a,int b){
        if(a <= 0 || b <= 0)
        {
            return 0;
        }
        while(a != b){
            a = a > b ? a - b : b - a;
        }
        return a;
    }
      

  7.   

    貌似你那个while循环中,若是特定的数的话,会循环死
      

  8.   

    为什么有了
    if(a <=0||b <=0){ 
                return 0; 
            }
     还要判断 a*b!=0?