Huvudskillnad: Vid programmering kan rekursionen förklaras genom att man beaktar en rekursiv funktion. En rekursiv funktion är en som kallar sig igen för att upprepa koden. Å andra sidan uppnås iteration med en iterativ funktion som slingrar för att upprepa någon del av koden.
I programmering används både rekursion och iteration för att uppnå repetitioner. De hänvisar till en process som upprepas flera gånger. Rekursion bygger på ett tillvägagångssätt där något hänvisar till sig själv tills ett villkor är uppfyllt. En metod sägs vara rekursiv om den kan kalla sig direkt eller indirekt som -
{
... namn() ...
}
eller
tomt namn ()
{
... spel () ...
}
tomrumsspel () {
... namn() ...
}
För en lyckad rekursion måste man komma ihåg att varje samtal som gjorts i rekursionsprocessen måste förenkla beräkningen. Rekursion uppnås genom att definiera ett basfall.
int factorial (int N)
{
om (N == 0) returnera 1;
återvända annars (N * faktorial (N-1));
}
I det här exemplet kan rekursionen lätt ses i uttalandet (N * Factorial (N-1)), där det kallar den faktoriella funktionen igen. Rekursion är väldigt hjälpsam eftersom det hjälper till att förkorta koden. Rekursionen är dock lite långsam i prestanda.
funktion faktoriell (n)
{
var loop, resultat;
resultat = 1;
för (slinga = 1; loop <= n; loop ++)
{
resultat = resultat * loop;
}
returresultat;
}
I detta exempel uppnås looping genom att använda heltal från 1 till n, och loop <= n-satsen används som ett kriterium för att stoppa ytterligare loopning. Således kan vi dra slutsatsen att samma resultat kan uppnås genom att använda en rekursion och iteration. De bygger dock båda på metoder som är lite annorlunda. Eventuell rekursiv algoritm kan också skrivas med hjälp av iterationer (loopar).
Jämförelse mellan rekursion och återuppvärmning:
Rekursion | Iteration | |
Definition | Recursion refererar till en rekursiv funktion där den kallar sig igen för att upprepa koden. | Iteration uppnås genom en iterativ funktion som slingrar för att upprepa en del av koden. |
Viktig poäng | Ett basfall måste bestämmas | Ett uppsägningstillstånd måste bestämmas |
Prestanda | Jämförelsevis långsam | Jämförelsevis snabb |
Minnesanvändning | Jämförbart mer | Jämförelsevis mindre |
Koda | Mindre | längre |
Oändlig upprepning | Oändlig recursion kan krascha systemet | Oändlig looping förbrukar CPU-cyklerna flera gånger |
Strukturera | Urval | Upprepning |
Lokala variabler | Krävs inte | Nödvändig |