编程之美 2.7最大公约数问题

来源:互联网 发布:mac做双系统 编辑:程序博客网 时间:2024/04/28 06:39

编程之美 2.7最大公约数问题

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);}}


原创粉丝点击