Euclid算法告诉我们如何计算两个最大公约数(GCD)
正整数a
和b
。使用Euclid算法,找到206
和40
的GCD(for
例如),首先找到206
除以40
时的余数。然后找到40
的GCD
这个余数(原来是6
),再次使用相同的想法。当你到达
第二个数字为0
的点,第一个数字将是206
和40
的GCD
您正在寻找,如下所示。
gcd(206, 40)
= gcd(40, 6)
= gcd(6, 4)
= gcd(4, 2)
= gcd(2, 0)
= 2
编写一个名为gcd
的方法。你必须在这种方法中使用回归(在方法中调用方法)。这种方法应该使用Euclid
算法返回两个正整数的最大公约数。
所以基本上我不知道怎么做这个(对不起我之前写的事故)递归..
请帮忙! :(我已经坚持了这么久..我写了一个方法,但它不使用递归,它只适用于给定的206
和40
..
答案 0 :(得分:4)
使用递归实现这很简单:
public int gcd(int a, int b) {
return b == 0 ? a : gcd(b, a % b);
}
该算法在this维基百科页面中进行了解释。