int solve(int a, int b)
{
if (a == b)
return a;
if (a < b)
return solve(b, a);
else
{
if (!a & 1 && !b & 1) //a,b都是偶数的情况
return solve(a / 2, b / 2) * 2;
else if (!a & 1 && b & 1)
return solve(a / 2, b);
else if (a & 1 && !b & 1)
return solve(a, b / 2);
else
return solve(a - b, b); //更相减损法,两个正整数a,b(a>b)之间的最大公约数等于a-b,b之间的最大公约数
}
}
a,b中一个为奇数的情况目前还未想到证明方式。