C rekursija (rekursinė funkcija)

Turinys

Šioje pamokoje išmoksite rašyti rekursines funkcijas C programavime pavyzdžio pagalba.

Funkcija, kuri save vadina, vadinama rekursine funkcija. Ši technika yra žinoma kaip rekursija.

Kaip vyksta rekursija?

 negaliojantis recurse () (… recurse ();…) int main () (… recurse ();…)

Rekursija tęsiasi tol, kol įvykdoma tam tikra sąlyga, kad to išvengtume.

Norėdami išvengti begalinio rekurso, jei… galima naudoti teiginį (ar panašų metodą), kai vienas filialas atlieka rekursyvųjį skambutį, o kitas - ne.

Pavyzdys: natūralių skaičių suma naudojant rekursiją

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

Rezultatas

 Įveskite teigiamą sveikąjį skaičių: 3 suma = 6

Iš pradžių sum()iškviečiama iš main()funkcijos, kurios skaičius perduodamas kaip argumentas.

Tarkime, kad iš sum()pradžių n vertė yra 3. Kito funkcijos skambučio metu funkcijai perduodama 2 sum(). Šis procesas tęsiasi tol, kol n yra lygus 0.

Kai n yra lygus 0, ifsąlyga nepavyksta ir elsedalis vykdoma grąžinant sveikųjų skaičių sumą į main()funkciją.

Rekursijos privalumai ir trūkumai

Rekursija daro programą elegantišką. Tačiau, jei našumas yra gyvybiškai svarbus, naudokite kilpas, nes rekursija paprastai yra daug lėtesnė.

Tai sakant, rekursija yra svarbi sąvoka. Jis dažnai naudojamas duomenų struktūroje ir algoritmuose. Pavyzdžiui, dažnai rekursija naudojama tokiose problemose kaip medžių kirtimas.

Įdomios straipsniai...