Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Rekurssio | Joitakin Edistyneitä Aiheita
C++-Funktiot

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.

Note
Huomio

Luvun n kertoma määritellään seuraavasti:

n! = n*(n-1)*(n-2)*..*2*1 = n*(n-1)!

main.cpp

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) kutsuu factorial(4) ja kertoo tuloksen luvulla 5.
  • factorial(4) kutsuu factorial(3) ja kertoo tuloksen luvulla 4.
  • factorial(3) kutsuu factorial(2) ja kertoo tuloksen luvulla 3.
  • factorial(2) kutsuu factorial(1) ja kertoo tuloksen luvulla 2.
  • factorial(1) on perustapaus ja palauttaa 1.
  • kertolasku jatkuu takaisin ketjussa, jolloin lopullinen kertoma luvulle 5 on 120.
question mark

Mikä on tässä luvussa luodun factorial()-funktion tulos syötteellä 3?

Valitse oikea vastaus

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 4. Luku 3

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

Osio 4. Luku 3
some-alt