De noodzaak om code te herhalen kan nooit worden onderschat bij het zoeken naar oplossingen voor enkele van de grootste problemen ter wereld. Wat u moet weten, is dat herhaling bij het programmeren twee vormen aanneemt: iteratie of recursie.

Het doel is hier om u kennis te laten maken met herhaling in code en om te demonstreren hoe deze kan worden gebruikt om uw Java-programma's te verbeteren.

Herhaalde programma's kunnen u helpen bij het oplossen van enkele van de moeilijkste programmeerproblemen. Dit is wat u moet weten om recursieve programma's in Java te maken.

Iteratie gebruiken

Iteratie gebruikt een lusstructuur om code te herhalen. De drie soorten iteratieve structuren zijn pretestlus (while), posttestlus (do-while) en tegengestuurde lus (voor).

Deze iteratieve structuren werken door een codeblok te herhalen terwijl een specifieke voorwaarde blijft bestaan true, maar zodra die voorwaarde false wordt, stopt de lus en keert het programma terug naar zijn normale toestand stromen.

instagram viewer

We zouden bijvoorbeeld een van de iteratieve structuren kunnen gebruiken om het probleem van de som van alle gehele getallen van 1 tot n op te lossen. Afhankelijk van de iteratieve structuur die wordt gebruikt, zal de oplossing een specifieke vorm aannemen, maar een van de de drie iteratieve structuren kunnen met behulp van het volgende een oplossing bieden voor dit probleem pseudocode.

Iteratie Pseudocode Voorbeeld


BEGIN
DECLEARE som, tel als geheel getal
som = 0
aantal = 1
HERHALING
Som = som + tellen
Count = tel + 1
TOT tel> n
EINDE

De bovenstaande pseudocode heeft twee variabelen, som en aantal, die respectievelijk worden geïnitialiseerd op 0 en 1. De "count" variabele wordt geïnitialiseerd op 1 omdat het probleem dat we proberen op te lossen stelt dat we de som van alle gehele getallen van 1 tot n nodig hebben.

De variabele "n" krijgt een willekeurig nummer van de gebruiker toegewezen en de variabele "count" wordt elk met één verhoogd keer dat een lus wordt uitgevoerd, maar zodra de waarde van de variabele 'count' die van 'n' overschrijdt, zal de lus hou op.

Waarom recursie gebruiken?

Als we de feiten rondom iteratie en recursie zouden onderzoeken, zullen we ontdekken dat verschillende dingen waar zijn.

  • Beide methoden brengen herhaling met zich mee.
  • Beide methoden vereisen een testconditie, die aangeeft wanneer er moet worden gestopt.
  • Beide methoden kunnen theoretisch voor altijd worden uitgevoerd als er niet aan een uitgangsvoorwaarde wordt voldaan.
  • Elk probleem dat kan worden opgelost met iteratie, kan ook worden opgelost met recursie en vice versa.

Dus waarom zouden we de ene methode boven de andere willen kiezen? Het simpele antwoord is efficiëntie. Met recursie kan een programmeur minder code gebruiken om te bereiken wat in wezen hetzelfde resultaat is. Minder code betekent dat de kans dat fouten onopgemerkt blijven aanzienlijk afneemt.

Recursie gebruikt meer geheugen en is langzamer dan iteratie, maar heeft een ingebouwde stack (datastructuur). Met iteratie zou je een datastructuur moeten bouwen (in wezen het wiel opnieuw uitvinden), waardoor je programma openstaat voor een grotere kans op niet-afgevangen fouten vanwege de extra code.

Verwant: Java-uitzonderingen: gaat u er goed mee om?

Hoe werkt recursie

Recursie is de naam die wordt gegeven aan een proces waarbij een functie zichzelf herhaaldelijk aanroept totdat aan een specifieke voorwaarde is voldaan. Deze repetitieve methode lost problemen op door ze op te splitsen in kleinere, eenvoudigere versies van zichzelf.

Elke recursieve functie bestaat uit twee delen: basisgeval en algemeen geval.

Basisstructuur van een recursief functievoorbeeld


Functie(){
//hoofdzaak
// algemeen geval
}

Het basisscenario is het gedeelte van de recursieve functie dat het probleem oplost. Dus wanneer de recursieve functie bij het basisscenario arriveert, verlaat het programma de recursieve functie en gaat verder met zijn natuurlijke stroom.

Het algemene geval is het gedeelte van de recursieve functie dat repetitief is. Dit is waar de functie zichzelf aanroept en waar het grootste deel van het werk wordt gedaan.

Recursie gebruiken in Java

Sommige programmeertalen ondersteunen alleen iteratie, terwijl andere alleen recursie ondersteunen. Gelukkig is Java een van de talen die beide repetitieve methoden ondersteunt.

In Java wordt recursie op vrijwel dezelfde manier gebruikt als in elke andere taal die dit ondersteunt. De sleutel is om er altijd voor te zorgen dat uw recursieve functie zowel een basis- als een algemeen geval heeft, in die volgorde.

Laten we teruggaan naar ons eerste sommatievoorbeeld, het doel is om de som te vinden van alle gehele getallen van 1 tot n, waarbij n een geheel getal is dat door de gebruiker wordt geleverd.

Voorbeeld van Java-recursie


// recursieve functie
int Som (int n) {
//hoofdzaak
if (n <= 1) {
terugkeer 1;
}
// algemeen geval
anders{
retourneer n + Som (n-1);
}
}

De recursieve functie hierboven neemt een geheel getal "n" en beëindigt zijn uitvoering alleen als de waarde van n kleiner is dan of gelijk is aan 1.

Als we het gehele getal 5 aan het bovenstaande programma zouden doorgeven, zou de variabele "n" de waarde 5 aannemen. De waarde van "n" wordt dan gecontroleerd in het basisgeval, maar aangezien 5 groter is dan 1, wordt "n" nu doorgegeven aan het algemene geval.

In dit voorbeeld roept het algemene geval de recursieve functie vier keer aan. Bij de laatste functieaanroep is de waarde van "n" 1, waardoor effectief wordt voldaan aan de vereisten van het basisscenario, wat resulteert in de beëindiging van de recursieve functie en 15 retourneert.

Als we de waarde van "n" veranderen in 7, roept de recursieve functie zichzelf zes keer aan en retourneert 28 voordat de uitvoering wordt beëindigd.

Zelf uitproberen? U kunt het recursieve programma hierboven uitvoeren door de volgende regel code te gebruiken in de hoofdfunctie van uw Java-programma.


System.out.println (Sum (7));

Wat je hebt geleerd

Als je dit hele artikel hebt gelezen, heb je nu een basiskennis van de twee repetitieve methoden die bij het programmeren worden gebruikt. U herkent nu de overeenkomsten tussen iteratie en recursie en waarom een ​​ontwikkelaar ervoor zou kiezen om recursie in plaats van iteratie te gebruiken, en hoe u een recursieve functie in Java gebruikt.

Beeldcredits: ThisIsEngineering /Pexels

E-mail
Wat is recursie en hoe gebruikt u het?

Leer de basisprincipes van recursie, de essentiële maar enigszins breinbrekende tool voor programmeurs.

Lees Volgende

Gerelateerde onderwerpen
  • Programmeren
  • Java
Over de auteur
Kadeisha Kean (7 Artikelen gepubliceerd)

Kadeisha Kean is een full-stack softwareontwikkelaar en technisch / technologisch schrijver. Ze heeft het onderscheidende vermogen om enkele van de meest complexe technologische concepten te vereenvoudigen; materiaal produceren dat gemakkelijk kan worden begrepen door elke beginneling op het gebied van technologie. Ze is gepassioneerd door schrijven, interessante software ontwikkelen en de wereld rondreizen (via documentaires).

Meer van Kadeisha Kean

Abonneer op onze nieuwsbrief

Word lid van onze nieuwsbrief voor technische tips, recensies, gratis e-boeken en exclusieve deals!

Nog een stap…!

Bevestig uw e-mailadres in de e-mail die we u zojuist hebben gestuurd.

.