它工作正常,但我只是不确定它是如何工作的,有人可以解释一下吗?谢谢
public static int gcd(int a, int b) {
return b==0 ? a : gcd(b, a%b);
}
它工作正常,但我只是不确定它是如何工作的,有人可以解释一下吗?谢谢
public static int gcd(int a, int b) {
return b==0 ? a : gcd(b, a%b);
}
您有一个三元运算符 ( bool ? x : y
)。这样的运算符将评估问号之前的语句。如果计算结果为true
,则选择 x,否则选择 y。
这意味着它的逻辑等价于:
public static int gcd(int a, int b)
{
if (b == 0)
return a;
else
return gcd(b, a % b);
}
接下来,a % b
计算两个数的模,即整数除法的余数a / b
。例如:7 % 2
结果1
和14 % 5
产量4
。
算法:http ://en.wikipedia.org/wiki/Greatest_common_divisor
句法:
return b==0? a :gcd(b, a%b)
方法
if(b==0)
return a;
else
return gcd(b, a%b);
找到最大除数是欧几里得算法的实现。它使用递归。