Šioje pamokoje sužinosime apie rekursinę funkciją C ++ ir jos darbą pavyzdžių pagalba.
Funkcija, kuri save vadina, vadinama rekursine funkcija. Ši technika yra žinoma kaip rekursija.
Rekursijos darbas C ++ formatu
void recurse() (… recurse();… ) int main() (… recurse();… )
Žemiau pateiktame paveikslėlyje parodyta, kaip veikia rekursija, skambinant sau vėl ir vėl.
![](https://cdn.wiki-base.com/6201887/c_recursion_with_example.png.webp)
Rekursija tęsiasi tol, kol įvykdoma kokia nors sąlyga.
Kad būtų išvengta begalinio rekurso, jei… galima naudoti teiginį (ar panašų metodą), kai vienas filialas atlieka rekursinį skambutį, o kitas - ne.
1 pavyzdys: Skaičiaus faktorius naudojant rekursiją
// 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; ) )
Rezultatas
Įveskite ne neigiamą skaičių: 4 koeficientas iš 4 = 24
Faktorinės programos darbas
![](https://cdn.wiki-base.com/6201887/c_recursion_with_example_2.png.webp)
Kaip matome, ši factorial()
funkcija vadina save. Tačiau kiekvieno skambučio metu n reikšmę sumažinome 1
. Kai n yra mažesnis 1
, factorial()
funkcija galiausiai grąžina išvestį.
Rekursijos privalumai ir trūkumai
Žemiau pateikiami rekurso naudojimo pliusai ir minusai C ++.
C ++ rekursijos privalumai
- Tai daro mūsų kodą trumpesnį ir švaresnį.
- Rekursija reikalinga iškilus problemoms, susijusioms su duomenų struktūromis ir pažangiais algoritmais, tokiais kaip diagrama ir medžių perėjimas.
C ++ rekursijos trūkumai
- Tai užima daug vietos, palyginti su kartojama programa.
- Jis naudoja daugiau procesoriaus laiko.
- Derinti su lygiaverte iteracine programa gali būti sunkiau.