Belangrijkste verschil: tijdens het programmeren kan recursie worden verklaard door een recursieve functie te beschouwen. Een recursieve functie is een functie die zichzelf opnieuw oproept om de code te herhalen. Aan de andere kant wordt iteratie bereikt door een iteratieve functie die wordt herhaald om een deel van de code te herhalen.
Bij het programmeren worden recursie en iteratie beide gebruikt om herhalingen te bereiken. Ze verwijzen naar een proces dat verschillende keren wordt herhaald. Recursie is gebaseerd op een benadering waarin iets naar zichzelf verwijst totdat aan een voorwaarde is voldaan. Een methode wordt recursief genoemd als deze zichzelf direct of indirect kan noemen zoals -
{
... naam() ...
}
of
ongeldige naam ()
{
... game () ...
}
void game () {
... naam() ...
}
Voor een succesvolle recursie moet men in gedachten houden dat elke oproep die tijdens het recursieproces wordt gedaan de berekening moet vereenvoudigen. Recursie wordt bereikt door een basissituatie te definiëren.
int-factorieel (int N)
{
als (N == 0) return 1;
else return (N * faculteit (N-1));
}
In dit voorbeeld is recursie eenvoudig te zien in de instructie (N * faculteit (N-1)), waar deze de faculteit-functie weer aanroept. Recursie is erg nuttig omdat het helpt bij het verkorten van de code. De recursie werkt echter een beetje traag.
functie factorie (n)
{
var-lus, resultaat;
resultaat = 1;
voor (loop = 1; lus <= n; lus ++)
{
resultaat = resultaat * loop;
}
terugkeer resultaat;
}
In dit voorbeeld wordt lusvorming bereikt door gehele getallen van 1 tot n te gebruiken, en lus <= n-instructie wordt gebruikt als een criterium om verder lussen te stoppen. We kunnen dus concluderen dat dezelfde resultaten kunnen worden bereikt door een recursie en iteratie te gebruiken. Ze zijn echter allebei gebaseerd op benaderingen die een beetje anders zijn. Elk recursief algoritme kan ook worden geschreven met behulp van iteraties (loops).
Vergelijking tussen recursie en iteratie:
Herhaling | herhaling | |
Definitie | Recursie verwijst naar een recursieve functie waarin deze zichzelf opnieuw oproept om de code te herhalen. | Iteratie wordt bereikt door een iteratieve functie die wordt herhaald om een deel van de code te herhalen. |
Belangrijk punt | Er moet een basisgeval worden bepaald | Een beëindigingsvoorwaarde moet worden bepaald |
Prestatie | Relatief traag | Relatief snel |
Geheugengebruik | Relatief meer | Relatief minder |
Code | Kleiner | Langer |
Oneindige herhaling | Oneindige recursie kan het systeem laten crashen | Oneindige lus verbruikt CPU-cycli herhaaldelijk |
Structuur | Selectie | Herhaling |
Lokale variabelen | Niet verplicht | Verplicht |