Rekurssio
Pyyhkäise näyttääksesi valikon
Rekursio ohjelmoinnissa tarkoittaa tekniikkaa, jossa funktio kutsuu itseään ratkaistakseen saman ongelman pienemmän osan. Se on tehokas ja elegantti tapa ratkaista ongelmia, jotka voidaan jakaa samantyyppisiin pienempiin osiin.
Rekursiivisissa funktioissa on tyypillisesti kaksi osaa:
-
Perustapaus: Määrittelee rekursiivisen funktion lopetusehdon. Kun perustapaus saavutetaan, funktio lakkaa kutsumasta itseään ja palauttaa tietyn arvon. Tämä on välttämätöntä äärettömän rekursion estämiseksi.
-
Rekursiotapaus: Määrittelee logiikan, jolla ongelma jaetaan pienempiin osiin ja funktiota kutsutaan rekursiivisesti pienennetyillä syötteillä. Rekursiotapaus mahdollistaa etenemisen kohti perustapausta.
Luvun n kertoma määritellään seuraavasti:
n! = n*(n-1)*(n-2)*..*2*1 = n*(n-1)!
main.cpp
12345678910111213141516171819#include <iostream> // Function to calculate factorial int factorial(int n) { // Base case: factorial of 0 or 1 is 1 if (n == 0 || n == 1) return 1; // Recursive case: multiply n with factorial of (n-1) std::cout << "Recursive Case: " << n << " * factorial(" << n - 1 << ")" << std::endl; return n * factorial(n - 1); } int main() { // Call the function std::cout << factorial(5) << std::endl; }
Perustapaus: Perustapaus on, kun syöte n on 0 tai 1. Tässä tapauksessa kertoma on määritelty arvoksi 1. Perustapaus varmistaa, että rekursio päättyy ja estää loputtoman rekursion.
Rekursiivinen tapaus: Rekursiivinen tapaus on logiikka, jolla lasketaan luvun n kertoma, kun n on suurempi kuin 1. Siinä kutsutaan kertomafunktiota rekursiivisesti argumentilla n - 1 ja kerrotaan tulos luvulla n. Tämä pienentää ongelmaa pienempään osaan laskemalla pienemmän luvun kertoman.
Funktion kutsuminen argumentilla 5. Vaiheittainen prosessi:
factorial(5)kutsuufactorial(4)ja kertoo tuloksen luvulla 5.factorial(4)kutsuufactorial(3)ja kertoo tuloksen luvulla 4.factorial(3)kutsuufactorial(2)ja kertoo tuloksen luvulla 3.factorial(2)kutsuufactorial(1)ja kertoo tuloksen luvulla 2.factorial(1)on perustapaus ja palauttaa 1.- kertolasku jatkuu takaisin ketjussa, jolloin lopullinen kertoma luvulle
5on120.
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme