Selles õpetuses õpite näite abil kirjutama rekursiivseid funktsioone C-programmeerimises.
Funktsioon, mis ennast kutsub, on tuntud kui rekursiivne funktsioon. Ja seda tehnikat tuntakse rekursioonina.
Kuidas rekursioon töötab?
void recurse () (… recurse ();…) int main () (… recurse ();…)
Rekursioon jätkub seni, kuni selle vältimiseks on täidetud mõni tingimus.
Lõputu rekursiooni vältimiseks saab kasutada… lauset (või muud sarnast lähenemist), kus üks haru teeb rekursiivse kõne ja teine mitte.
Näide: looduslike arvude summa rekursiooni abil
#include int sum(int n); int main() ( int number, result; printf("Enter a positive integer: "); scanf("%d", &number); result = sum(number); printf("sum = %d", result); return 0; ) int sum(int n) ( if (n != 0) // sum() function calls itself return n + sum(n-1); else return n; )
Väljund
Sisestage positiivne täisarv: 3 summa = 6
Esialgu sum()
kutsutakse main()
funktsioon funktsioonilt, mille arv on argumendina edastatud.
Oletame, et n sees sum()
on algselt 3 väärtus . Järgmise funktsioonikõne ajal edastatakse funktsioonile 2 sum()
. See protsess kestab seni, kuni n on võrdne 0-ga.
Kui n on 0, võrdub if
tingimus ja else
osa täidetakse, tagastades täisarvude summa lõpuks main()
funktsioonile.
Rekursiooni eelised ja puudused
Rekursioon muudab programmi elegantseks. Kui jõudlus on aga ülioluline, kasutage selle asemel tsükleid, kuna rekursioon on tavaliselt palju aeglasem.
Nagu öeldud, on rekursioon oluline mõiste. Seda kasutatakse sageli andmestruktuuris ja algoritmides. Näiteks on tavaline, et rekursiooni kasutatakse sellistes probleemides nagu puude läbimine.