->>IF (N = 0) OR (N = 1) THEN Fibo := N ¦ Järgmine := Fibo((N - 1) --- Eelmine := Fibo(N - 2) Fibo := Eelmine + Järgmine Rekursiivne funktsioon: FUNCTION Fibo(N: Byte): Longint; VAR Jargmine, Eelmine: Longint; BEGIN IF (N = 0) OR (N = 1) THEN BEGIN Fibo := N; Exit; END; Jargmine := Fibo(N - 1); Eelmine := Fibo(N - 2); Fibo := Eelmine + Jargmine; END; { Fibo } Ülesanne: teha ise täitmise analüüs. Probleemide rekursiivne lahendamine Kuidas arendada välja rekursiivset algoritmi? See pole eesmärk omaette, seda enam, et enamik probleeme laheneb teisiti lihtsamalt. Kuid on n.-ö. rekursiivseid probleeme, mille rekursiivne lahendus on loogilisem, elegantsem ja lihtsam. Kuidas ära tunda, et tasub môelda rekursioonile, s.t. millised on rekursiivse ülesande tunnusjooned? Olgu n! jälle baasnäiteks, kuigi sellegi ülesande mitterekursiivne lahendus on parem. (1) palju ühelaadseid operatsioone, mille "mahukus" on erinev: 0!, 1!, 2!, 3!, . . .
Puu on rekursiivne, seega ka enamik algoritme, mis temaga rakendada, on rekursiivsed. Kuid iga rekursiivset algoritmi saab esitada ka iteratiiselt, nagu enne juttugi oli. Kui juur välja jätta, siis kõigil teistel tipul on olemas ematipp ja ematippudel(parent) on omakorda tütartipud(child). Sama emaga tipud on õed(siblings). Kui meil on mitu puud, võime rääkida metsast(forest). Luline on rääkida veel puu kõrgusest. Puu jaguneb nivoodeks. Nivoode hulk on puu kõrgus. Mõnes õpikus võib näha ka teistsugust definitsiooni puu kõrguse kohta. Järjestatud puu, järjestamata puu