用javascript递归计算两个数的GCD

问题描述

我有一个 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