最大公约数

bool isEven_(int n)//是否是偶数
{
    return (n&1)==0;
}
int gcd(int x, int y)//注意递归的基准情况和x,y同为偶数的情况
{
    if(x<y)
    {
        return gcd(y,x);
    }
    if(y==0)
        return x;
    //以上两步为递归算法中的基准情况!!

    if(isEven_(x)&&isEven_(y))
    {
        return (gcd(x>>1,y>>1))<<1;//x>>1 x/2
    }else if(isEven_(x)&&!isEven_(y))
    {
        return gcd(x>>1,y);
    }else if(!isEven_(x)&&isEven_(y))
    {
        return gcd(x,y>>1);
    }else{
        return gcd(y,x-y);
    }
}
posted @ 2012-10-01 16:27  logzh  阅读(264)  评论(0编辑  收藏  举报