两种方法,一种是辗转想减法,可以对辗转相除法中对大数求模而造成的性能瓶颈进行避免
但不能避免这种情况 100000000,1
第二种用判断奇数偶数,将2的公因子提出来,分为四种情况,x,y均为偶数
x,y其中一个为偶数
x,y均为奇数,那么x-y就为偶数了
package gcd_2_7;
public class Gcd_2_7 {
static int gcd(int x,int y){
if (x<y) {
return gcd(y, x);
}
if (y==0) {
return x;
}else {
return gcd(x-y, y);
}
}
static int gcd2(int x,int y){
if (x<y) {
return gcd2(y, x);
}
if (y==0) {
return x;
}else {
if (x%2==0) {
if (y%2==0) {
return (2*gcd2(x/2, y/2));
}
else {
return gcd2(x/2, y);
}
}else {
if (y%2==0) {
return gcd2(x, y/2);
}else {
return gcd2(x-y, y);
}
}
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(gcd2(6, 8));
}
}