Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Rekursjon | Noen Avanserte Emner
C++-Funksjoner

Rekursjon

Sveip for å vise menyen

Rekursjon i programmering refererer til teknikken der en funksjon kaller seg selv for å løse en mindre utgave av det samme problemet. Dette er en kraftig og elegant måte å løse problemer på som kan deles opp i mindre delproblemer av samme type.

Rekursive funksjoner består vanligvis av to komponenter:

  • Basis-tilfelle: Definerer avslutningsbetingelsen for den rekursive funksjonen. Når basis-tilfellet er nådd, slutter funksjonen å kalle seg selv og returnerer en spesifikk verdi. Dette er nødvendig for å forhindre uendelig rekursjon.

  • Rekursivt tilfelle: Definerer logikken for å dele opp problemet i mindre delproblemer og kalle funksjonen rekursivt med reduserte inputverdier. Det rekursive tilfellet gjør at funksjonen kan nærme seg basis-tilfellet.

Note
Merk

Fakultet av et tall n er definert som følger:

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; }

Grunnleggende tilfelle: Det grunnleggende tilfellet er når inputen n er lik 0 eller 1. I dette tilfellet er fakultetet definert som 1. Det grunnleggende tilfellet sikrer at rekursjonen avsluttes og forhindrer uendelig rekursjon.

Rekursivt tilfelle: Det rekursive tilfellet er logikken for å beregne fakultetet til n når n er større enn 1. Det innebærer å kalle fakultetsfunksjonen rekursivt med n - 1 som argument og multiplisere det med n. Dette reduserer problemet til et mindre delproblem ved å beregne fakultetet til et mindre tall.

Kall funksjonen med argument lik 5. Her er trinnvis prosess:

  • factorial(5) kaller factorial(4) og multipliserer resultatet med 5.
  • factorial(4) kaller factorial(3) og multipliserer resultatet med 4.
  • factorial(3) kaller factorial(2) og multipliserer resultatet med 3.
  • factorial(2) kaller factorial(1) og multipliserer resultatet med 2.
  • factorial(1) er det grunnleggende tilfellet og returnerer 1.
  • multiplikasjonen fortsetter oppover kjeden, noe som resulterer i det endelige fakultetet av 5 som er lik 120.
question mark

Hva er outputen til funksjonen factorial() som ble laget i kapitlet for input 3?

Velg det helt riktige svaret

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 4. Kapittel 3

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

Seksjon 4. Kapittel 3
some-alt