Poznajemy optymalny sposób na wyliczenie największego wspólnego dzielnika przy pomocy modulo i rekurencji. Do dzieła.

Pomyślmy, liczba modulo przez liczbę daje 0 to mamy podzielność. Dobry warunek bazowy dla rekurencji:

function gcd(a, b){
    if(b == 0) 
        return a;
}

Czyli tak, jak w b mamy mieć 0 to a ma nam zwrócić tę liczbę, która jest podzielna. Ok, matematyki nie będziemy odkrywać na nowo, tak wygląda ten algorytm:

function gcd(a, b){
    if(b == 0) 
        return a;

    return gcd(b, a % b);
  }


console.log(gcd(5,125)); //5
console.log(gcd(25,125)); //25

Czyli tak, 5 i 125. to weź 125 i 5 mod 125 (5). 5,5, to weź 5 i 5%5 (0). B równe zero, zwróć a (5).

Inny przykład, 6 i 16:

  • a – 6, b -16
  • 16, 6 mod 16 (10
  • a 16, b 10
  • 10, 16 mod 10 (6)
  • a 10, b 6
  • 6, 10 mod 6 (4)
  • a6, b 4
  • 4, 6 mod 4 (2)
  • a 4 b 2
  • 2, 4 mod 2 (0)
  • a 2 b 0 zwróć a