Wat is het verschil tussen Recursie en Loop

De grootste verschil tussen recursie en lus is dat recursie is een mechanisme om een ​​functie binnen dezelfde functie aan te roepen, terwijl lus een besturingsstructuur is die helpt om een ​​reeks instructies keer op keer uit te voeren totdat de gegeven voorwaarde waar is.

Recursie en lus zijn twee programmeerconcepten. Beide technieken helpen bij het ontwikkelen van kleine tot complexe programma's.

Key Areas Covered

1. Wat is recursie
- Definitie, functionaliteit
2. Wat is Loop
- Definitie, functionaliteit
3. Wat is het verschil tussen Recursie en Loop
- Vergelijking van belangrijke verschillen

Sleutelbegrippen

Do While Loop, For Loop, Loop, Recursion, While Loop

Wat is recursie

Wanneer een functie zichzelf binnen de functie noemt, wordt dit recursie genoemd. Een voorbeeld van een programma met recursie is factorieel berekenen.

n! = n * (n-1) !, als n> 0

n! = 1, als n = 0;

Figuur 1: Factorial programma in Java

Volgens het bovenstaande programma creëert het een object van Factorial. Vervolgens, met behulp van dat object, roept het de methode factorieel. En de methode krijgt de waarde 4. Vervolgens wordt de sectie else uitgevoerd. Daarna wordt het factorieel (3) genoemd. Vervolgens voert de sectie else uit. Het noemt faculteit (2). Vervolgens wordt de sectie else uitgevoerd. Het noemt faculteit (1) en de sectie else wordt opnieuw uitgevoerd. Het noemt faculteit (0). Nu is n 0. Het retourneert 1. Uiteindelijk wordt 1x2x3x4 = 24 geretourneerd en die waarden worden op het scherm weergegeven. Op dezelfde manier roept een faculteit-functie zichzelf steeds weer op.

Wat is Loop

Soms is het nodig om een ​​codeblok herhaaldelijk uit te voeren. Programmeertalen bieden een besturingsstructuur met de naam lus om een ​​reeks instructies uit te voeren. Loop voert een statement binnen het blok één voor één uit. Er zijn drie soorten lussen als while-lus, voor lus en do while lus. Bovendien, een herhaling verwijst ook naar een lus.

Herhalingslus

Een while-lus bevat een testexpressie. Als die expressie waar is, worden de instructies in de while-lus uitgevoerd. Aan het einde van de instructies wordt de testuitdrukking opnieuw gecontroleerd. Vervolgens herhaalt dit proces zich totdat de testuitdrukking onwaar is geworden. Wanneer de testexpressie false is, wordt de while-lus beëindigd. Daarna gaat de besturing naar de eerste instructie na de while-lus.

Figuur 2: Programma met while-lus

In het bovenstaande programma is x 5. Het is minder dan 10. Daarom wordt het afgedrukt. Vervolgens neemt de x-waarde toe. Nu is x 6. Het is ook minder dan 10; daarom wordt het afgedrukt. Dan neemt de x-waarde opnieuw toe. Nu is x 7. Dit herhaalt zich dus. Wanneer x 10 is, is de voorwaarde onwaar en eindigt de lus.

For loop

For loop bevat de initialisatie, testexpressie en update. De initialisatie-uitdrukking wordt eenmaal uitgevoerd. Vervolgens evalueert het de testexpressie. Als het waar is, worden de instructies binnen in lus uitgevoerd. Aan het einde van de lus evalueert het de bijgewerkte uitdrukking. Dit proces wordt dus herhaald totdat de testexpressie false is. Als het vals is, wordt de lus beëindigd. Vervolgens gaat de besturing naar de volgende instructie na voor lus.

Figuur 3: Programma met For Loop

In de bovenstaande lus is de x-waarde 1. Deze is minder dan 5. De waarde wordt dus afgedrukt. Vervolgens wordt de x-waarde met 1 verhoogd. De x-waarde is nu 2. Dit is ook minder dan 5. Daarom wordt deze afgedrukt. Vervolgens neemt de x-waarde met 1 toe. Nu is x 3. Dit proces herhaalt zich. Wanneer x 6 is, wordt de testconditie onwaar en eindigt de lus.

Do While Loop

Doe while-lus is vergelijkbaar met while-lus, maar het controleert de conditie na het uitvoeren van de lusinstructies. Daarom, of de voorwaarde waar of onwaar is, wordt de lus ten minste één keer uitgevoerd. Hier gebeurt het controleren van de toestand nadat de lus is uitgevoerd. Als de voorwaarde waar is, worden de lusinstructies opnieuw uitgevoerd. Dit proces wordt herhaald totdat de voorwaarde onwaar wordt.

Figuur 4: Program With Do While Loop

De x-waarde is aanvankelijk 5. De do while-lus voert de waarde 5 uit en drukt deze af. Vervolgens wordt x 6. Het is minder dan 10. Dus 6 worden afgedrukt. Vervolgens wordt x 7. Het is ook minder dan 10. En dit proces herhaalt zich. Wanneer x 9 is, wordt de waarde afgedrukt. Maar wanneer x 10 wordt, wordt de voorwaarde onwaar. Daarom eindigt de lus.

Neem bijvoorbeeld aan dat x in eerste instantie 20 is. Het wordt afgedrukt 20. Dan wordt x verhoogd en wordt x 21. De testvoorwaarde is onwaar. Daarom zal het de lus beëindigen. De waarde 20 is hoger dan 10 en de testvoorwaarde is onwaar. De lus wordt echter eenmaal uitgevoerd. Voer while while-lus dus minstens één keer uit.

Verschil tussen recursie en lus

Definitie

Recursie is een methode om een ​​functie binnen dezelfde functie aan te roepen. Lus is daarentegen een besturingsstructuur waarmee een blok code binnen het programma herhaaldelijk kan worden uitgevoerd. Deze definities bevatten het fundamentele verschil tussen recursie en lus.

Snelheid

Snelheid is een belangrijk verschil tussen recursie en loop. Recursie-uitvoering verloopt trager. Lus wordt echter sneller uitgevoerd dan recursie.

stack

In recursie wordt de stapel gebruikt om de lokale variabelen op te slaan wanneer de functie wordt aangeroepen. Maar loop gebruikt geen stack.

Staat

Als er geen beëindigingsvoorwaarde is, kan dit een oneindige recursie zijn. Als de voorwaarde echter nooit onwaar wordt, zal het een oneindige lus zijn. Dit is een ander verschil tussen recursie en loop.

Space Complexity

Bovendien is de ruimtecomplexiteit van het recursieve programma hoger dan een lus.

Code leesbaarheid

Een ander verschil tussen recursie en lus is dat een programma met recursie leesbaarder is dan een programma met loops.

Conclusie

Het verschil tussen recursie en lus is dat recursie een mechanisme is om een ​​functie binnen dezelfde functie aan te roepen, terwijl lus een controlestructuur is die het mogelijk maakt om een ​​set instructies keer op keer uit te voeren totdat de gegeven voorwaarde waar is.

Referentie:

1. "Recursie (computerwetenschap)." Wikipedia, Wikimedia Foundation, 12 september 2018, hier beschikbaar.
2. "Java Loop Control." Www.tutorialspoint.com, hier beschikbaar.