Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Rekursion | Metoder
Java Fördjupad
course content

Kursinnehåll

Java Fördjupad

Java Fördjupad

1. Djupgående Java-struktur
2. Metoder
3. Sträng Avancerad
4. Klasser
5. Klasser Avancerat

book
Rekursion

Hur du enkelt kan förstöra din kod?

Varför kan detta förstöra koden? Eftersom det kan leda till oändlig rekursion, vilket kommer att förbruka minne utan stopp och försämra enhetens prestanda. Så varför behöver vi rekursion överhuvudtaget? I vissa fall kan rekursion vara användbart, men det bör användas med försiktighet. Till exempel kan rekursion ersätta en while-loop. Låt oss titta på ett exempel där rekursion används för att beräkna summan av alla tal upp till ett tal som skickas som parameter:

Main.java

Main.java

copy
1234567891011121314151617181920
package com.example; public class Main { // main method to run the application public static void main(String[] args) { // do not modify the code below System.out.println(calculateSum(5)); } // method to calculate the sum of numbers from 1 to num using recursion static int calculateSum(int num) { // if num is greater than 0, recursively calculate the sum if (num > 0) { num = num + calculateSum(num - 1); } else { return 0; } return num; } }

Metoden calculateSum() anropar sig själv med minskade värden. Vi har också en utgångspunkt från denna rekursion när variabeln num blir noll. Denna metod beräknar summan av alla tal från 1 till parametern, i vårt fall 5. Låt oss titta på flödesschemat som visar hur rekursion fungerar med denna metod som exempel:

Exemplet ovan visar hur metoden anropar sig själv med minskade värden, och när den når noll går den tillbaka upp genom att summera värdena. Vi kan också observera hur kroppen av if-blocket exekveras, där vi lägger till num till resultatet av metodanropet med ett minskat värde. De mellanliggande värdena efter varje metodanrop anges nära pilarna.

Kan vi undvika att använda rekursion?

Rekursion kan också ersättas med en vanlig loop. Låt oss titta på ett exempel där vi först använder en rekursiv metod och sedan använder en for-loop för att utföra samma operation:

Main.java

Main.java

copy
123456789101112131415161718192021222324252627282930313233
package com.example; public class Main { // main method to run the application public static void main(String[] args) { // do not modify the code below int num = 5; // printing the result of the recursive sum calculation System.out.println("Result using recursion: " + calculateSum(num)); int result = 0; // calculating the sum using a for-loop for (int i = 1; i <= num; i++) { result = result + i; } // printing the result of the sum calculation using the for-loop System.out.println("Result using for-loop: " + result); } // method to calculate the sum of numbers from 1 to num using recursion static int calculateSum(int num) { // if num is greater than 0, recursively calculate the sum if (num > 0) { num = num + calculateSum(num - 1); } else { return 0; } return num; } }

Här ser vi hur vi ersätter vår rekursiva metod med en vanlig for-loop, där vi använder variabeln i för att öka vårt result med i varje gång tills det når det angivna talet num, som är parametern i metoden.

Slutsats

Sammanfattningsvis kan rekursiva metoder vara användbara men också riskabla. Rekursion kan ofta ersättas av loopar, och även om det kan förenkla vissa uppgifter kan det också orsaka problem om det inte används försiktigt. Om du väljer att använda rekursion, även med erfarenhet, se till att vara försiktig.

1. Vad är rekursion i Java?

2. Vilket är bättre att använda, rekursion eller en vanlig loop?

question mark

Vad är rekursion i Java?

Select the correct answer

question mark

Vilket är bättre att använda, rekursion eller en vanlig loop?

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 2. Kapitel 7

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

course content

Kursinnehåll

Java Fördjupad

Java Fördjupad

1. Djupgående Java-struktur
2. Metoder
3. Sträng Avancerad
4. Klasser
5. Klasser Avancerat

book
Rekursion

Hur du enkelt kan förstöra din kod?

Varför kan detta förstöra koden? Eftersom det kan leda till oändlig rekursion, vilket kommer att förbruka minne utan stopp och försämra enhetens prestanda. Så varför behöver vi rekursion överhuvudtaget? I vissa fall kan rekursion vara användbart, men det bör användas med försiktighet. Till exempel kan rekursion ersätta en while-loop. Låt oss titta på ett exempel där rekursion används för att beräkna summan av alla tal upp till ett tal som skickas som parameter:

Main.java

Main.java

copy
1234567891011121314151617181920
package com.example; public class Main { // main method to run the application public static void main(String[] args) { // do not modify the code below System.out.println(calculateSum(5)); } // method to calculate the sum of numbers from 1 to num using recursion static int calculateSum(int num) { // if num is greater than 0, recursively calculate the sum if (num > 0) { num = num + calculateSum(num - 1); } else { return 0; } return num; } }

Metoden calculateSum() anropar sig själv med minskade värden. Vi har också en utgångspunkt från denna rekursion när variabeln num blir noll. Denna metod beräknar summan av alla tal från 1 till parametern, i vårt fall 5. Låt oss titta på flödesschemat som visar hur rekursion fungerar med denna metod som exempel:

Exemplet ovan visar hur metoden anropar sig själv med minskade värden, och när den når noll går den tillbaka upp genom att summera värdena. Vi kan också observera hur kroppen av if-blocket exekveras, där vi lägger till num till resultatet av metodanropet med ett minskat värde. De mellanliggande värdena efter varje metodanrop anges nära pilarna.

Kan vi undvika att använda rekursion?

Rekursion kan också ersättas med en vanlig loop. Låt oss titta på ett exempel där vi först använder en rekursiv metod och sedan använder en for-loop för att utföra samma operation:

Main.java

Main.java

copy
123456789101112131415161718192021222324252627282930313233
package com.example; public class Main { // main method to run the application public static void main(String[] args) { // do not modify the code below int num = 5; // printing the result of the recursive sum calculation System.out.println("Result using recursion: " + calculateSum(num)); int result = 0; // calculating the sum using a for-loop for (int i = 1; i <= num; i++) { result = result + i; } // printing the result of the sum calculation using the for-loop System.out.println("Result using for-loop: " + result); } // method to calculate the sum of numbers from 1 to num using recursion static int calculateSum(int num) { // if num is greater than 0, recursively calculate the sum if (num > 0) { num = num + calculateSum(num - 1); } else { return 0; } return num; } }

Här ser vi hur vi ersätter vår rekursiva metod med en vanlig for-loop, där vi använder variabeln i för att öka vårt result med i varje gång tills det når det angivna talet num, som är parametern i metoden.

Slutsats

Sammanfattningsvis kan rekursiva metoder vara användbara men också riskabla. Rekursion kan ofta ersättas av loopar, och även om det kan förenkla vissa uppgifter kan det också orsaka problem om det inte används försiktigt. Om du väljer att använda rekursion, även med erfarenhet, se till att vara försiktig.

1. Vad är rekursion i Java?

2. Vilket är bättre att använda, rekursion eller en vanlig loop?

question mark

Vad är rekursion i Java?

Select the correct answer

question mark

Vilket är bättre att använda, rekursion eller en vanlig loop?

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 2. Kapitel 7
some-alt