Behovet for å gjenta kode kan aldri undervurderes i jakten på løsninger på noen av verdens største problemer. Det du trenger å vite er at repetisjon i programmering tar en av to former — iterasjon eller rekursjon.
Målet her er å introdusere deg for repetisjon i kode og demonstrere hvordan den kan brukes til å forbedre Java-programmene dine.
Gjentatte programmer kan hjelpe deg med å løse noen av de vanskeligste programmeringsproblemene. Her er hva du trenger å vite for å lage rekursive programmer i Java.
Bruke Iterasjon
Iterasjon bruker en sløyfestruktur for å gjenta kode. De tre typene av iterative strukturer er pre-test loop (while), post-test loop (do-while), og motstyrt sløyfe (for).
Disse iterative strukturer fungerer ved å gjenta en blokk med kode mens en bestemt tilstand forblir sant, men så snart denne tilstanden blir falsk, stopper sløyfen og programmet går tilbake til sitt normale strømme.
For eksempel kan vi bruke en av de iterative strukturene for å løse problemet med summen av alle heltall fra 1 til n. Avhengig av den iterative strukturen som brukes, vil løsningen ha en bestemt form, men hvilken som helst av de tre iterative strukturene kan gi en løsning på dette problemet ved hjelp av følgende pseudokode.
Iterasjon Pseudokodeeksempel
START
AVSLUT sum, tell som heltall
sum = 0
telle = 1
GJENTA
Sum = sum + telling
Count = count + 1
TIL antall> n
SLUTT
Pseudokoden ovenfor har to variabler, sum og telling, som initialiseres til henholdsvis 0 og 1. "Count" -variabelen initialiseres til 1 fordi problemet vi prøver å løse sier at vi trenger summen av alle heltall fra 1 til n.
Variabelen "n" vil bli tildelt et tilfeldig tall fra brukeren, og "count" -variabelen øker med en hver gang en sløyfe utføres, men så snart verdien av "telle" -variabelen overstiger den for "n", vil sløyfen Stoppe.
Hvorfor bruke rekursjon?
Hvis vi skulle undersøke fakta rundt iterasjon og rekursjon, vil vi finne flere ting å være sanne.
- Begge metodene innebærer repetisjon.
- Begge metodene krever en testtilstand, som vil indikere når du skal stoppe.
- Begge metodene kan teoretisk utføres for alltid hvis en utgangsbetingelse ikke blir gitt eller oppfylt.
- Ethvert problem som kan løses ved hjelp av iterasjon, kan også løses ved hjelp av rekursjon og omvendt.
Så hvorfor skulle vi ønske å velge en metode fremfor den andre? Det enkle svaret er effektivitet. Med rekursjon kan en programmerer bruke mindre kode for å oppnå det som egentlig er det samme resultatet. Mindre kode betyr at det er en betydelig reduksjon i muligheten for at feil blir ubemerket.
Rekursjon bruker mer minne og er tregere enn iterasjon, men har en innebygd stabel (datastruktur). Med iterasjon må du bygge en datastruktur (i det vesentlige gjenoppfinne hjulet), slik at programmet ditt blir åpent for en større mulighet for ufangede feil på grunn av den ekstra koden.
I slekt: Java-unntak: Behandler du dem riktig?
Hvordan fungerer rekursjon
Rekursjon er navnet som blir gitt til en prosess der en funksjon gjentatte ganger kaller seg til en bestemt betingelse er oppfylt. Denne repeterende metoden løser problemer ved å bryte dem ned i mindre, enklere versjoner av seg selv.
Hver rekursive funksjon består av to deler — basissak og generell sak.
Grunnleggende struktur for et rekursivt funksjonseksempel
Funksjon(){
// basissak
// generelt tilfelle
}
Basissaken er den delen av den rekursive funksjonen som løser problemet. Så når den rekursive funksjonen kommer til basissaken, avslutter programmet den rekursive funksjonen og fortsetter med sin naturlige flyt.
Det generelle tilfellet er delen av den rekursive funksjonen som er repeterende. Det er her funksjonen kaller seg selv og hvor hovedtyngden av arbeidet gjøres.
Bruker rekursjon i Java
Noen programmeringsspråk støtter bare iterasjon, mens andre bare støtter rekursjon. Heldigvis er Java et av språkene som støtter begge repetitive metodene.
I Java brukes rekursjon på omtrent samme måte som den brukes på ethvert annet språk som støtter det. Nøkkelen er å alltid sørge for at din rekursive funksjon har både en base og en generell sak, i den rekkefølgen.
La oss gå tilbake til vårt første summeringseksempel, målet er å finne summen av alle heltall fra 1 til n, der n er et heltall som leveres av brukeren.
Java Recursion Eksempel
// rekursiv funksjon
int Sum (int n) {
// basissak
hvis (n <= 1) {
retur 1;
}
// generelt tilfelle
ellers{
returnere n + Sum (n-1);
}
}
Den rekursive funksjonen ovenfor tar et helt tall “n” og avslutter bare utførelsen når verdien av n er mindre enn eller lik 1.
Hvis vi skulle overføre heltallet 5 til programmet ovenfor, ville variabelen "n" anta verdien 5. Verdien av “n” vil da bli sjekket i basissaken, men gitt at 5 er større enn 1 “n” vil nå bli overført til den generelle saken.
I dette eksemplet vil det generelle tilfellet kalle den rekursive funksjonen fire ganger. Ved den endelige funksjonsanropet vil verdien "n" være 1, som effektivt oppfyller kravene i basissaken, noe som resulterer i avslutningen av den rekursive funksjonen og retur 15.
Hvis vi endrer verdien på “n” til 7, vil den rekursive funksjonen ringe seg selv seks ganger og returnere 28 før den avsluttes.
Vil du prøve det selv? Du kan utføre det rekursive programmet ovenfor ved å bruke følgende kodelinje i hovedfunksjonen til Java-programmet.
System.out.println (Sum (7));
Det du lærte
Hvis du klarte det gjennom hele denne artikkelen, har du nå en grunnleggende forståelse av de to repetitive metodene som brukes i programmering. Du gjenkjenner nå likhetene mellom iterasjon og rekursjon og hvorfor en utvikler velger å bruke rekursjon over iterasjon, og hvordan du bruker en rekursiv funksjon i Java.
Bildekreditt: ThisIsEngineering /Pexels
Lær det grunnleggende om rekursjon, det essensielle, men litt tankebøyende verktøyet for programmerere.
Les Neste
- Programmering
- Java
Kadeisha Kean er en full-stack programvareutvikler og teknisk / teknologiforfatter. Hun har den distinkte evnen til å forenkle noen av de mest komplekse teknologiske begrepene; produsere materiale som lett kan forstås av en hvilken som helst teknologinybegynner. Hun brenner for å skrive, utvikle interessant programvare og reise verden rundt (gjennom dokumentarer).
Abonner på vårt nyhetsbrev
Bli med på nyhetsbrevet vårt for tekniske tips, anmeldelser, gratis e-bøker og eksklusive tilbud!
Ett steg til…!
Bekreft e-postadressen din i e-posten vi nettopp sendte deg.