Deo zbornika Učimo algoritme

Uzajamna rekurzija

Rekurzivne funkcije obično pozivaju same sebe. Pored klasične rekurzije, postoji i mogućnost da se funkcije međusobno pozivaju i tako stvaraju uzajamnu rekurziju.

Na ovaj način fukcija ne poziva samu sebe direktno, nego posredno preko druge funkcije.

Primer: paran ili neparan broj

Naredni primer ilustruje dve funkcije koje se koriste u ispitivanju da li je parametar n (koji mora biti prirodan broj) paran broj.

function jelParan(n) {
  if (n==0) return true
  return jelNeparan(n-1)
}

function jelNeparan(n) {
  if (n==0) return false
  return jelParan(n-1)
}

console.log(jelParan(5))

Ovde primenjena logika je sledeća: broj je paran ako je broj-1 neparan. I ovde imamo trivijalni slučaj za broj=0, koja će u funkciji jelParan vratiti tačno (jer je 0 paran broj), a u funkciji jelNeparan netačno.