Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Rekursion | Några Avancerade Ämnen
C++-Funktioner

Rekursion

Svep för att visa menyn

Rekursion inom programmering syftar på tekniken där en funktion anropar sig själv för att lösa en mindre version av samma problem. Det är ett kraftfullt och elegant sätt att lösa problem som kan delas upp i mindre delproblem av samma typ.

Rekursiva funktioner består vanligtvis av två komponenter:

  • Basfall: Definierar avslutningsvillkoret för den rekursiva funktionen. När basfallet uppnås slutar funktionen att anropa sig själv och returnerar ett specifikt värde. Detta är nödvändigt för att undvika oändlig rekursion.

  • Rekursivt fall: Definierar logiken för att dela upp problemet i mindre delproblem och anropa funktionen rekursivt med reducerade indata. Det rekursiva fallet gör att funktionen kan närma sig basfallet.

Note
Notering

Fakulteten av ett tal n definieras enligt följande:

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

Basfall: Basfallet är när indata n är lika med 0 eller 1. I detta fall definieras fakulteten som 1. Basfallet säkerställer att rekursionen avslutas och förhindrar oändlig rekursion.

Rekursivt fall: Det rekursiva fallet är logiken för att beräkna fakulteten av n när n är större än 1. Det innebär att fakultetsfunktionen anropas rekursivt med n - 1 som argument och multipliceras med n. Detta reducerar problemet till ett mindre delproblem genom att beräkna fakulteten av ett mindre tal.

Anropa funktionen med argumentet lika med 5. Här är processen steg för steg:

  • factorial(5) anropar factorial(4) och multiplicerar resultatet med 5.
  • factorial(4) anropar factorial(3) och multiplicerar resultatet med 4.
  • factorial(3) anropar factorial(2) och multiplicerar resultatet med 3.
  • factorial(2) anropar factorial(1) och multiplicerar resultatet med 2.
  • factorial(1) är basfallet och returnerar 1.
  • multiplikationen fortsätter tillbaka upp i kedjan, vilket resulterar i den slutliga fakulteten av 5 som är lika med 120.
question mark

Vad blir utdata från den i kapitlet skapade funktionen factorial() för indata 3?

Vänligen välj det korrekta svaret

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 4. Kapitel 3

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

Avsnitt 4. Kapitel 3
some-alt