Šajā apmācībā mēs uzzināsim par rekursīvo funkciju C ++ un tās darbību ar piemēru palīdzību.
Funkcija, kas pati sevi sauc, ir pazīstama kā rekursīva funkcija. Šī metode ir pazīstama kā rekursija.
Rekursijas darbība C ++
void recurse() (… recurse();… ) int main() (… recurse();… )
Zemāk redzamais attēls parāda, kā darbojas rekursija, atkal un atkal sevi saucot.
![](https://cdn.wiki-base.com/6201887/c_recursion_with_example.png.webp)
Rekursija turpinās, līdz tiek izpildīti kādi nosacījumi.
Lai novērstu bezgalīgu rekursiju, ja… citādi var izmantot paziņojumu (vai līdzīgu pieeju), kur viena filiāle veic rekursīvu zvanu, bet otra nedara.
1. piemērs: Skaitļa faktori, izmantojot rekursiju
// Factorial of n = 1*2*3*… *n #include using namespace std; int factorial(int); int main() ( int n, result; cout <> n; result = factorial(n); cout << "Factorial of " << n << " = " < 1) ( return n * factorial(n - 1); ) else ( return 1; ) )
Rezultāts
Ievadiet skaitli, kas nav negatīvs: 4 koeficients 4 = 24
Factorial programmas darbība
![](https://cdn.wiki-base.com/6201887/c_recursion_with_example_2.png.webp)
Kā redzam, factorial()
funkcija pati sevi sauc. Tomēr katra zvana laikā mēs esam samazinājuši n vērtību par 1
. Ja n ir mazāks nekā 1
, factorial()
funkcija galu galā atgriež rezultātu.
Rekursijas priekšrocības un trūkumi
Zemāk ir plusi un mīnusi, izmantojot rekursiju C ++.
C ++ rekursijas priekšrocības
- Tas padara mūsu kodu īsāku un tīrāku.
- Rekursija ir nepieciešama saistībā ar problēmām, kas saistītas ar datu struktūrām un uzlabotiem algoritmiem, piemēram, grafiku un koku šķērsošanu.
C ++ rekursijas trūkumi
- Tas aizņem daudz vietas kaudzē, salīdzinot ar iteratīvu programmu.
- Tas izmanto vairāk procesora laika.
- Atkļūdot var būt grūtāk, salīdzinot ar līdzvērtīgu iteratīvu programmu.