📅  最后修改于: 2023-12-03 14:55:18.238000             🧑  作者: Mango
最大公约数(Greatest Common Divisor,简称 GCD)是指两个或多个整数的公共因子中最大的一个。在计算机编程中,经常需要求取最大公约数。最大公约数的求解方法可以使用递归或非递归方式实现。
下面介绍一种使用递归方式求取最大公约数的 Javascript 实现。
/**
* 求取两个数的最大公约数 - 递归算法
* @param {number} a 较大的一个数
* @param {number} b 较小的一个数
* @returns {number} a 和 b 的最大公约数
*/
function gcd(a, b) {
if (a < b) { // 保证 a 始终大于等于 b
let temp = a
a = b
b = temp
}
if (b === 0) {
return a
} else {
return gcd(b, a % b)
}
}
该算法的实现思路是:
由于使用了递归算法,因此需要注意递归过深可能会引起栈溢出问题,应当根据实际情况选择合适的数据范围。
下面给出一些测试样例(使用 mocha 进行测试):
describe('gcd', () => {
it('gcd(2, 5) should return 1', () => {
assert.strictEqual(gcd(2, 5), 1)
})
it('gcd(2, 3) should return 1', () => {
assert.strictEqual(gcd(2, 3), 1)
})
it('gcd(12, 18) should return 6', () => {
assert.strictEqual(gcd(12, 18), 6)
})
})
本文介绍了一种使用递归方式求取最大公约数的 Javascript 实现,并给出了测试样例进行验证。对于求解最大公约数,递归算法是一种简单而有效的实现方式,但需要注意递归过深可能会引起栈溢出问题。