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.
Fakultet av et tall n er definert 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; }
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)kallerfactorial(4)og multipliserer resultatet med 5.factorial(4)kallerfactorial(3)og multipliserer resultatet med 4.factorial(3)kallerfactorial(2)og multipliserer resultatet med 3.factorial(2)kallerfactorial(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
5som er lik120.
Takk for tilbakemeldingene dine!
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår