Hrr
#1
hello all, How can I make my gcd function within .reduce()
even shorter than the
let gcd = (x,y) => {
if (y === 0) return x;
return gcd(y, x % y);
}
here is what I’ve done
return arr.reduce((x,y) => (y === 0) ? x : (y = x % y))
but doesn’t respond as expected.
Your gcd function uses recursion. I believe the only way you will get your reduce function to use recursion is to pass it as the reduce callback.
let gcd = (x,y) => {
if (y === 0) return x;
return gcd(y, x % y);
}
return arr.reduce(gcd);
You could however shorten your gcd function a bit.
const gcd = (x, y) => y === 0 ? : gcd(y, x % y);
Hrr
#3
Thanks
you are right
I’ve brought a little change in it
return arr.reduce(function gcd(x,y) {
if (y === 0) return x;
return gcd(y, x % y);
})
1 Like
Hrr
#4
if it is mixed with your formula it becomes even shorter ( only two lines )
return arr.reduce(function gcd(x,y) {
return y === 0 ? x: gcd(y, x % y);
})