Behovet av att upprepa kod kan aldrig underskattas i sökandet efter lösningar på några av världens största problem. Vad du behöver veta är att repetitionen tar en av två former i programmering - iteration eller rekursion.

Målet här är att introducera dig till repetition i kod och visa hur den kan användas för att förbättra dina Java-program.

Upprepade program kan hjälpa dig att lösa några av de svåraste programmeringsproblemen. Här är vad du behöver veta för att skapa rekursiva program i Java.

Använda Iteration

Iteration använder en loopstruktur för att upprepa kod. De tre typerna av iterativa strukturer är för-test-loop (while), post-test-loop (do-while) och motkontrollerad slinga (för).

Dessa iterativa strukturer fungerar genom att upprepa ett kodblock medan ett specifikt tillstånd kvarstår sant, men så snart det villkoret blir falskt slutar slingan och programmet återgår till sitt normala flöde.

Vi kan till exempel använda en av de iterativa strukturerna för att lösa problemet med summan av alla heltal från 1 till n. Beroende på den iterativa strukturen som används kommer lösningen att ha en specifik form, men någon av de tre iterativa strukturerna kan ge en lösning på detta problem med hjälp av följande pseudokod.

instagram viewer

Iteration Pseudokodsexempel


START
AVSLUTA summan, räknas som heltal
summa = 0
räkna = 1
UPPREPA
Summa = summa + antal
Räkna = räkna + 1
TILL Räkna> n
SLUTET

Pseudokoden ovan har två variabler, summa och antal, som initialiseras till 0 respektive 1. Variabeln "räkna" initialiseras till 1 eftersom problemet som vi försöker lösa säger att vi behöver summan av alla heltal från 1 till n.

Variabeln "n" tilldelas ett slumpmässigt tal från användaren och variabeln "räkna" ökar med en vardera gång en slinga utförs, men så snart värdet för variabeln "räkna" överstiger värdet för "n" kommer slingan att sluta.

Varför använda rekursion?

Om vi ​​skulle undersöka fakta kring iteration och rekursion kommer vi att hitta flera saker som är sanna.

  • Båda metoderna innebär upprepning.
  • Båda metoderna kräver ett testförhållande som anger när du ska sluta.
  • Båda metoderna kan teoretiskt köras för alltid om ett exitvillkor inte ges eller uppfylls.
  • Alla problem som kan lösas med iteration kan också lösas med rekursion och vice versa.

Så varför skulle vi vilja välja en metod framför den andra? Det enkla svaret är effektivitet. Med rekursion kan en programmerare använda mindre kod för att uppnå det som i princip är samma resultat. Mindre kod innebär att risken för fel går obemärkt ned betydligt.

Rekursion använder mer minne och är långsammare än iteration, men har en inbyggd stack (datastruktur). Med iteration måste du bygga en datastruktur (i huvudsak återuppfinna hjulet), vilket gör att ditt program är öppet för en större möjlighet till ofångade fel på grund av den extra koden.

Relaterad: Java-undantag: hanterar du dem rätt?

Hur fungerar rekursion

Rekursion är namnet på en process där en funktion upprepade gånger anropar sig själv tills ett specifikt villkor är uppfyllt. Denna repetitiva metod löser problem genom att bryta ner dem i mindre, enklare versioner av sig själva.

Varje rekursiv funktion består av två delar - basfall och allmänt fall.

Grundläggande struktur för ett rekursivt funktionsexempel


Fungera(){
//basfallet
// allmänt fall
}

Basfallet är den del av den rekursiva funktionen som löser problemet. Så närhelst den rekursiva funktionen anländer till basfallet lämnar programmet den rekursiva funktionen och fortsätter med sitt naturliga flöde.

Det allmänna fallet är den del av den rekursiva funktionen som är repetitiv. Det är här funktionen kallar sig själv och där huvuddelen av arbetet görs.

Använda rekursion i Java

Vissa programmeringsspråk stöder endast iteration, medan andra bara stöder rekursion. Lyckligtvis är Java ett av språken som stöder båda repetitiva metoderna.

I Java används rekursion på ungefär samma sätt som den används på något annat språk som stöder det. Nyckeln är att alltid se till att din rekursiva funktion har både en bas och ett allmänt fall, i den ordningen.

Låt oss gå tillbaka till vårt första summeringsexempel, målet är att hitta summan av alla heltal från 1 till n, där n är ett heltal som tillhandahålls av användaren.

Java Recursion Exempel


// rekursiv funktion
int Sum (int n) {
//basfallet
om (n <= 1) {
retur 1;
}
// allmänt fall
annan{
returnera n + summa (n-1);
}
}

Den rekursiva funktionen ovan tar ett heltal "n" och avslutar dess exekvering endast när värdet på n är mindre än eller lika med 1.

Om vi ​​skulle skicka heltalet 5 till programmet ovan, skulle variabeln "n" antaga värdet 5. Värdet på "n" skulle sedan kontrolleras i basfallet, men med tanke på att 5 är större än 1 kommer "nu" att överföras till det allmänna fallet.

I det här exemplet kommer det allmänna fallet att anropa den rekursiva funktionen fyra gånger. Vid den slutliga funktionsanropet kommer värdet "n" att vara 1, vilket effektivt uppfyller kraven i basfallet vilket resulterar i avslutningen av den rekursiva funktionen och återvänder 15.

Om vi ​​ändrar värdet “n” till 7, kommer den rekursiva funktionen att ringa sig själv sex gånger och returnera 28 innan den avslutas.

Vill du prova det själv? Du kan köra det rekursiva programmet ovan genom att använda följande kodrad i Java-programmets huvudfunktion.


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

Vad du lärde dig

Om du klarade dig genom hela denna artikel har du nu en grundläggande förståelse för de två repetitiva metoderna som används vid programmering. Du känner nu igen likheterna mellan iteration och rekursion och varför en utvecklare skulle välja att använda rekursion över iteration, och hur man använder en rekursiv funktion i Java.

Bildkredit: ThisIsEngineering /Pexels

E-post
Vad är rekursion och hur använder du det?

Lär dig grunderna i rekursion, det väsentliga men lite sinnesböjande verktyget för programmerare.

Läs Nästa

Relaterade ämnen
  • Programmering
  • Java
Om författaren
Kadeisha Kean (7 artiklar publicerade)

Kadeisha Kean är en full-stack programvaruutvecklare och teknisk / teknikförfattare. Hon har den distinkta förmågan att förenkla några av de mest komplexa tekniska begreppen; producera material som lätt kan förstås av alla nybörjare. Hon brinner för att skriva, utveckla intressant programvara och resa runt i världen (genom dokumentärer).

Mer från Kadeisha Kean

Prenumerera på vårt nyhetsbrev

Gå med i vårt nyhetsbrev för tekniska tips, recensioner, gratis e-böcker och exklusiva erbjudanden!

Ett steg till…!

Bekräfta din e-postadress i e-postmeddelandet som vi just skickade till dig.

.