Rekursion
Stryg for at vise menuen
Rekursion i programmering henviser til teknikken, hvor en funktion kalder sig selv for at løse en mindre udgave af det samme problem. Det er en kraftfuld og elegant metode til at løse problemer, der kan opdeles i mindre delproblemer af samme type.
Rekursive funktioner består typisk af to komponenter:
-
Basis-tilfælde: Definerer betingelsen for, hvornår den rekursive funktion skal stoppe. Når basis-tilfældet nås, stopper funktionen med at kalde sig selv og returnerer en bestemt værdi. Dette er nødvendigt for at undgå uendelig rekursion.
-
Rekursivt tilfælde: Definerer logikken for at opdele problemet i mindre delproblemer og kalde funktionen rekursivt med reducerede input. Det rekursive tilfælde gør det muligt for funktionen at nærme sig basis-tilfældet.
Fakultet af et tal n er defineret som følger:
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; }
Basis tilfælde: Basis tilfælde er, når inputtet n er lig med 0 eller 1. I dette tilfælde er fakultetet defineret som 1. Basis tilfælde sikrer, at rekursionen afsluttes og forhindrer uendelig rekursion.
Rekursivt tilfælde: Det rekursive tilfælde er logikken for at beregne fakultetet af n, når n er større end 1. Det indebærer at kalde fakultetsfunktionen rekursivt med n - 1 som argument og multiplicere det med n. Dette reducerer problemet til et mindre delproblem ved at beregne fakultetet af et mindre tal.
Kald funktionen med argument lig med 5. Her er trin-for-trin processen:
factorial(5)kalderfactorial(4)og multiplicerer resultatet med 5.factorial(4)kalderfactorial(3)og multiplicerer resultatet med 4.factorial(3)kalderfactorial(2)og multiplicerer resultatet med 3.factorial(2)kalderfactorial(1)og multiplicerer resultatet med 2.factorial(1)er basis tilfælde og returnerer 1.- multiplikationen fortsætter op gennem kæden, hvilket resulterer i det endelige fakultet af
5, som er lig med120.
Tak for dine kommentarer!
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat