Ebben az oktatóanyagban megismerheted a rekurzív függvények írását C programozással egy példa segítségével.
Az önmagát hívó függvény rekurzív függvényként ismert. Ezt a technikát rekurziónak nevezik.
Hogyan működik a rekurzió?
void recurse () (… recurse ();…) int main () (… recurse ();…)
A rekurzió addig folytatódik, amíg valamilyen feltétel nem teljesül annak megakadályozására.
A végtelen rekurzió megelőzésére, ha… más utasítás (vagy hasonló megközelítés) használható, ahol az egyik ág rekurzív hívást kezdeményez, a másik pedig nem.
Példa: Természetes számok összege rekurzióval
#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; )
Kimenet
Adjon meg egy pozitív egész számot: 3 összeg = 6
Kezdetben az argumentumként átadott szám függvényből sum()
hívják meg main()
.
Tegyük fel, hogy n értéke n belül sum()
kezdetben 3. A következő funkcióhívás során 2 átkerül a sum()
funkcióhoz. Ez a folyamat addig folytatódik, amíg n nem egyenlő 0-val.
Ha n egyenlő 0-val, a if
feltétel meghiúsul, és a else
rész végrehajtásra kerül, így az egész számok összegét végül a main()
függvénynek adja vissza.
A rekurzió előnyei és hátrányai
A rekurzió elegánssá teszi a programot. Ha azonban a teljesítmény létfontosságú, használjon inkább ciklusokat, mivel a rekurzió általában sokkal lassabb.
Ennek ellenére a rekurzió fontos fogalom. Gyakran használják az adatszerkezetben és az algoritmusokban. Például a rekurziót gyakran használják olyan problémáknál, mint a fák bejárása.