C Rekursio (rekursiivinen toiminto)

Sisällysluettelo

Tässä opetusohjelmassa opit kirjoittamaan rekursiivisia toimintoja C-ohjelmoinnissa esimerkin avulla.

Itsensä kutsuva toiminto tunnetaan rekursiivisena funktiona. Ja tämä tekniikka tunnetaan rekursiona.

Kuinka rekursio toimii?

 void recurse () (… recurse ();…) int main () (… recurse ();…)

Rekursio jatkuu, kunnes jokin ehto täyttyy sen estämiseksi.

Äärettömän toistumisen estämiseksi, jos… muuta käskyä (tai vastaavaa lähestymistapaa) voidaan käyttää, kun yksi haara tekee rekursiivisen puhelun ja toinen ei.

Esimerkki: Luonnollisten lukujen summa rekursiota käyttämällä

 #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; ) 

Tuotos

 Syötä positiivinen kokonaisluku: 3 summa = 6

Aluksi sum()kutsutaan main()funktiosta, jonka numero on välitetty argumenttina.

Oletetaan, että sisällä olevan n: n arvo sum()on aluksi 3. Seuraavan toimintopuhelun aikana 2 siirretään sum()toiminnolle. Tätä prosessia jatketaan, kunnes n on yhtä suuri kuin 0.

Kun n on yhtä suuri kuin 0, ifehto epäonnistuu ja elseosa suoritetaan palauttamalla kokonaislukujen summa lopulta main()funktioon.

Rekursioiden edut ja haitat

Rekursio tekee ohjelmasta tyylikkään. Jos suorituskyky on kuitenkin elintärkeää, käytä silmukoita, koska rekursio on yleensä paljon hitaampaa.

Toisin sanoen rekursio on tärkeä käsite. Sitä käytetään usein tietorakenteessa ja algoritmeissa. Esimerkiksi on tavallista käyttää rekursiota esimerkiksi puiden läpikulkemisessa.

Mielenkiintoisia artikkeleita...