问题描述
我有一个 calculator
函数来计算两个数字的 GCD
,我在更改它以使其使用以下规则计算 gcd rcursively
时遇到问题:
if y is zero then x is the gcd
,否则 the gcd is always the gcd of y and remainder of x/y
..
这是需要更改的代码
function calculator(x,y){
let r=x%y;
while(r!=0){
x=y;
y=r;
r=x%y;
}
return y;
}
解决方法
只要跟着字:
- 如果 y 为零,则 x 是 gcd,
- 否则 gcd 总是 y 的 gcd 和 x/y 的余数
function gcd(x,y) {
if (y === 0) return x;
/* else */ return gcd(y,x % y);
}
console.log(gcd(27,12)); // 3
console.log(gcd(12,27)); // 3