编写一个方法,使用RECURSION找到2个整数之间的最大公约数?

时间:2013-09-13 15:25:56

标签: java algorithm math methods recursion

Euclid算法告诉我们如何计算两个最大公约数(GCD) 正整数ab。使用Euclid算法,找到20640的GCD(for 例如),首先找到206除以40时的余数。然后找到40的GCD 这个余数(原来是6),再次使用相同的想法。当你到达 第二个数字为0的点,第一个数字将是20640的GCD 您正在寻找,如下所示。

gcd(206, 40)
= gcd(40, 6)
= gcd(6, 4)
= gcd(4, 2)
= gcd(2, 0)
= 2

编写一个名为gcd的方法。你必须在这种方法中使用回归(在方法中调用方法)。这种方法应该使用Euclid 算法返回两个正整数的最大公约数。

所以基本上我不知道怎么做这个(对不起我之前写的事故)递归.. 请帮忙! :(我已经坚持了这么久..我写了一个方法,但它不使用递归,它只适用于给定的20640 ..

1 个答案:

答案 0 :(得分:4)

使用递归实现这很简单:

public int gcd(int a, int b) {
    return b == 0 ? a : gcd(b, a % b);
}

该算法在this维基百科页面中进行了解释。