Mi piacerebbe trovare il massimo comun divisore usando JavaScript.JS come trovare il massimo comune divisore
Chiunque l'ha già fatto e ha voluto condividere?
Mi piacerebbe trovare il massimo comun divisore usando JavaScript.JS come trovare il massimo comune divisore
Chiunque l'ha già fatto e ha voluto condividere?
Ecco una soluzione ricorsiva.
var gcd = function(a, b) {
if (! b) {
return a;
}
return gcd(b, a % b);
};
Il nostro scenario di base è quando b
è uguale a 0
. In questo caso, restituiamo a
.
In fase di ricorsività, scambiamo gli argomenti di input ma passiamo il resto di a/b
come secondo argomento.
function egcd(a, b) {
if (a == 0)
return b;
while (b != 0) {
if (a > b)
a = a - b;
else
b = b - a;
}
return a;
}
Tratto da Wikipedia.
ricorsivo:
function gcd_rec(a, b) {
if (b) {
return gcd_rec(b, a % b);
} else {
return Math.abs(a);
}
}
iterativo:
function gcd(a,b) {
a = Math.abs(a);
b = Math.abs(b);
if (b > a) {var temp = a; a = b; b = temp;}
while (true) {
if (b == 0) return a;
a %= b;
if (a == 0) return b;
b %= a;
}
}
'if (a <0) a = -a;' Puoi anche fai 'a = Math.abs (a);' (lo stesso per la riga successiva) – user2428118
funziona bene, grazie! – bboy
ricorsivo non è il più veloce. –
@FlorianF Ok, grazie per quello. Mi mancava il punto in cui l'OP chiedeva la soluzione più rapida possibile. – alex