Sobes.tech
Intern

Kas yra rekursija?

sobes.tech AI

Atsakymas iš AI

Rekursija yra procesas, kai funkcija iškviečia save patį. Programavime rekursinė funkcija yra tokia, kuri tiesiogiai arba netiesiogiai iškviečia save. Norint išvengti begalinės kilpos, rekursinė funkcija turi turėti bazinį atvejį (base case), kuriuo ji sustoja nuo savęs kvietimo.

Naudojimo pavyzdžiai:

  • Duomenų struktūrų perėjimas (pvz., medžiai).
  • Problemos sprendimas, kurias galima suskirstyti į mažesnes tos pačios rūšies užduotis (pvz., faktorialo skaičiavimas).

Faktorialo skaičiavimas naudojant rekursiją:

def factorial(n):
  # Bazinis atvejis: 0 faktorialas yra 1
  if n == 0:
    return 1
  # Rekursinis atvejis: faktorialas n = n * faktorialas (n-1)
  else:
    return n * factorial(n - 1)

# Naudojimo pavyzdys
result = factorial(5)
# rezultatas bus 120

Rekursijos trūkumai:

  • Gali sunaudoti daug atminties dėl iškvietimų steko.
  • Kai kuriais atvejais gali būti mažiau efektyvi nei iteraciniai sprendimai.
  • Gali sukelti steko perpildymą giliuose rekursiniuose iškvietimuose.