C Rekursija (rekursīvā funkcija)

Satura rādītājs

Šajā apmācībā jūs iemācīsities rakstīt rekursīvas funkcijas C programmēšanā ar piemēra palīdzību.

Funkcija, kas pati sevi sauc, ir pazīstama kā rekursīva funkcija. Šī metode ir pazīstama kā rekursija.

Kā darbojas rekursija?

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

Rekursija turpinās, līdz ir izpildīti daži nosacījumi, lai to novērstu.

Lai novērstu bezgalīgu rekursiju, ja… citādi var izmantot paziņojumu (vai līdzīgu pieeju), kur viena filiāle veic rekursīvo zvanu, bet otra - ne.

Piemērs: Dabisko skaitļu summa, izmantojot rekursiju

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

Rezultāts

 Ievadiet pozitīvu veselu skaitli: 3 summa = 6

Sākotnēji sum()tiek izsaukts no main()funkcijas ar skaitli, kas nodots kā arguments.

Pieņemsim, ka sum()sākotnēji n vērtība ir 3. Nākamā funkcijas izsaukuma laikā funkcijai tiek nodota 2 sum(). Šis process turpinās, līdz n ir vienāds ar 0.

Kad n ir vienāds ar 0, ifnosacījums neizdodas un elsedaļa tiek izpildīta, veselo skaitļu summu galu galā atgriežot main()funkcijai.

Rekursijas priekšrocības un trūkumi

Rekursija padara programmu elegantu. Tomēr, ja veiktspēja ir vitāli svarīga, tā vietā izmantojiet cilpas, jo rekursija parasti notiek daudz lēnāk.

Tas nozīmē, ka rekursija ir svarīgs jēdziens. To bieži izmanto datu struktūrā un algoritmos. Piemēram, rekursiju parasti izmanto tādās problēmās kā koku šķērsošana.

Interesanti raksti...