Behovet for at gentage kode kan aldrig undervurderes i søgen efter løsninger på nogle af verdens største problemer. Hvad du har brug for at vide, er at gentagelse i programmering tager en af ​​to former - iteration eller rekursion.

Målet her er at introducere dig til gentagelse i kode og demonstrere, hvordan den kan bruges til at forbedre dine Java-programmer.

Gentagne programmer kan hjælpe dig med at løse nogle af de sværeste programmeringsproblemer. Her er hvad du har brug for at vide for at oprette rekursive programmer i Java.

Brug af iteration

Iteration bruger en loopstruktur til at gentage kode. De tre typer iterative strukturer er præ-test loop (while), post-test loop (do-while) og modstyret løkke (til).

Disse iterative strukturer fungerer ved at gentage en blok af kode, mens en bestemt tilstand forbliver sandt, men så snart denne tilstand bliver falsk, stopper sløjfen, og programmet vender tilbage til det normale flyde.

For eksempel kunne vi anvende en af ​​de iterative strukturer til at løse problemet med summen af ​​alle heltal fra 1 til n. Afhængigt af den iterative struktur, der bruges, har løsningen en bestemt form, men en hvilken som helst af de tre iterative strukturer kan give en løsning på dette problem ved hjælp af følgende pseudokode.

instagram viewer

Iteration Pseudocode-eksempel


START
AFKLAR sum, tælle som heltal
sum = 0
optælling = 1
GENTAGE
Sum = sum + antal
Count = count + 1
INDtil optælling> n
ENDE

Pseudokoden ovenfor har to variabler, sum og antal, der initialiseres til henholdsvis 0 og 1. Variablen "tælle" initialiseres til 1, fordi problemet, som vi prøver at løse, siger, at vi har brug for summen af ​​alle heltal fra 1 til n.

Variablen "n" tildeles et tilfældigt tal fra brugeren, og "count" -variablen øges med en hver gang en løkke udføres, men så snart værdien af ​​"tæller" -variablen overstiger værdien for "n", vil sløjfen hold op.

Hvorfor bruge rekursion?

Hvis vi skulle undersøge fakta omkring iteration og rekursion, vil vi finde flere ting at være sande.

  • Begge metoder involverer gentagelse.
  • Begge metoder kræver en testtilstand, som angiver, hvornår man skal stoppe.
  • Begge metoder kan teoretisk udføres for evigt, hvis en exitbetingelse ikke er givet eller opfyldt.
  • Ethvert problem, der kan løses ved hjælp af iteration, kan også løses ved hjælp af rekursion og omvendt.

Så hvorfor vil vi vælge en metode frem for den anden? Det enkle svar er effektivitet. Med rekursion kan en programmør bruge mindre kode til at opnå det, der stort set er det samme resultat. Mindre kode betyder, at der er et betydeligt fald i muligheden for, at fejl går ubemærket hen.

Rekursion bruger mere hukommelse og er langsommere end iteration, men har en indbygget stak (datastruktur). Med iteration skal du opbygge en datastruktur (i det væsentlige genopfinde hjulet), så dit program er åbent for en større mulighed for ufangede fejl på grund af den ekstra kode.

Relaterede: Java-undtagelser: håndterer du dem rigtigt?

Hvordan fungerer rekursion

Rekursion er navnet på en proces, hvor en funktion gentagne gange kalder sig selv, indtil en bestemt betingelse er opfyldt. Denne gentagne metode løser problemer ved at opdele dem i mindre, enklere versioner af sig selv.

Hver rekursiv funktion består af to dele - basissag og almindelig sag.

Grundlæggende struktur for et rekursivt funktionseksempel


Fungere(){
// basissag
// generel sag
}

Basissagen er den del af den rekursive funktion, der løser problemet. Så når den rekursive funktion ankommer til basissagen, forlader programmet den rekursive funktion og fortsætter med sin naturlige strømning.

Det generelle tilfælde er det afsnit af den rekursive funktion, der er gentagne. Det er her, funktionen kalder sig selv, og hvor hovedparten af ​​arbejdet udføres.

Brug af rekursion i Java

Nogle programmeringssprog understøtter kun iteration, mens andre kun understøtter rekursion. Heldigvis er Java et af de sprog, der understøtter begge gentagne metoder.

I Java bruges rekursion på samme måde som det bruges på ethvert andet sprog, der understøtter det. Nøglen er altid at sikre, at din rekursive funktion har både en base og en generel sag i den rækkefølge.

Lad os gå tilbage til vores indledende summeringseksempel, målet er at finde summen af ​​alle heltal fra 1 til n, hvor n er et heltal, der leveres af brugeren.

Java-rekursionseksempel


// rekursiv funktion
int Sum (int n) {
// basissag
hvis (n <= 1) {
returnere 1;
}
// generel sag
andet{
returnere n + sum (n-1);
}
}

Den rekursive funktion ovenfor tager et heltal "n" og afslutter kun dens udførelse, når værdien af ​​n er mindre end eller lig med 1.

Hvis vi skulle overføre heltal 5 til programmet ovenfor, ville variablen "n" antage værdien 5. Værdien af ​​“n” kontrolleres derefter i basissagen, men i betragtning af at 5 er større end 1 ”vil nu blive videregivet til det generelle tilfælde.

I dette eksempel kalder det generelle tilfælde den rekursive funktion fire gange. Ved det sidste funktionsopkald vil værdien "n" være 1, hvilket effektivt opfylder kravene i basissagen, hvilket resulterer i afslutningen af ​​den rekursive funktion og returnerer 15.

Hvis vi ændrer værdien på “n” til 7, vil den rekursive funktion kalde sig selv seks gange og returnere 28, før den afsluttes.

Vil du prøve det selv? Du kan udføre det rekursive program ovenfor ved hjælp af følgende linje kode i hovedfunktionen i dit Java-program.


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

Hvad du lærte

Hvis du har gjort det gennem hele denne artikel, har du nu en grundlæggende forståelse af de to gentagne metoder, der bruges i programmering. Du genkender nu lighederne mellem iteration og rekursion, og hvorfor en udvikler vælger at bruge rekursion frem for iteration, og hvordan man bruger en rekursiv funktion i Java.

Billedkredit: ThisIsEngineering /Pexels

E-mail
Hvad er rekursion, og hvordan bruger du det?

Lær det grundlæggende i rekursion, det essentielle, men let mind-bending værktøj til programmører.

Læs Næste

Relaterede emner
  • Programmering
  • Java
Om forfatteren
Kadeisha Kean (7 artikler offentliggjort)

Kadeisha Kean er en full-stack softwareudvikler og teknisk / teknologiforfatter. Hun har den særskilte evne til at forenkle nogle af de mest komplekse teknologiske begreber; producerer materiale, der let kan forstås af enhver teknologinevner. Hun brænder for at skrive, udvikle interessant software og rejse verden rundt (gennem dokumentarfilm).

Mere fra Kadeisha Kean

Abonner på vores nyhedsbrev

Deltag i vores nyhedsbrev for tekniske tip, anmeldelser, gratis e-bøger og eksklusive tilbud!

Et trin mere !!!

Bekræft din e-mail-adresse i den e-mail, vi lige har sendt dig.

.