Rekursīvs



Datorprogrammēšanā šis termins rekursīvs apraksta funkciju vai metodi, kas atkārtoti aprēķina mazāku sevis daļu, lai iegūtu gala rezultātu. Tas ir līdzīgs iterācijai, taču tā vietā, lai atkārtotu darbību kopumu, rekursīvā funkcija veic atkārtojumu, atsaucoties uz sevi savā definīcijā. Lai gan sākotnēji rekursīvās programmēšanas jēdzienu var būt grūti uztvert, tā apgūšana var būt ļoti noderīga. Rekursija ir viens no datorzinātnes pamatinstrumentiem.



Klasisks piemērs ir rekursīvā metode skaitļa faktoriāla aprēķināšanai. Vesela skaitļa faktoriāls n , kas ir rakstīts kā n! , ir rezultāts, reizinot n ar visiem pozitīvajiem skaitļiem, kas mazāki par n. Piemēram, 3! = 3 x 2 x 1, kā rezultātā iegūst 6 un 4! = 4 x 3 x 2 x 1, kā rezultātā 24. Faktoriāla aprēķināšanai efektīvs veids ir rekursīva funkcija.

Tālāk ir sniegts JavaScript rakstītas rekursīvas faktoriālās funkcijas piemērs.



function  factorial  (n) { return (n === 0) ? 1 : n *  factorial  (n-1); }

Kā redzat, daļa no funkcijas definīcijas faktoriāls ir rezultāts faktoriāls veic ar mazāku veselu skaitli. Zvanot pats, tas var reizināt skaitli ar katru pozitīvo skaitli, kas ir mazāks par to, un pēc tam atgriezt gala rezultātu. Rekursīvās funkcijas var būt noderīgas citos aprēķinos, piemēram, aprēķinot Fibonači skaitļus vai lielāko kopīgo dalītāju.

Rekursīvās loģikas izmantošanai var būt daži kritumi, tostarp bezgalīgas cilpas izveide programmēšanā. Šī iemesla dēļ evakuācijas apstākļi (piemēram, līdz brīdim, kad tas tiek darīts) palīdz samazināt, ja ne novērst, bezgalīgas cilpas rašanās iespēju. Ja notiek bezgalīga cilpa, tas var izraisīt programmas daudz atmiņas izmantošanu. Tas var izraisīt arī programmas, operētājsistēmas vai datora darbības pārtraukšanu.