Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Rekursjon | Metoder
Java Utvidet
course content

Kursinnhold

Java Utvidet

Java Utvidet

1. Dyp Java-struktur
2. Metoder
3. Avansert Streng
4. Klasser
5. Avanserte Klasser

book
Rekursjon

Hvordan ødelegge koden din enkelt?

Hvorfor kan dette ødelegge koden? Fordi det kan føre til uendelig rekursjon, som vil bruke opp minnet og redusere enhetens ytelse. Så hvorfor trenger vi rekursjon i det hele tatt? I noen tilfeller kan rekursjon være nyttig, men det bør brukes med forsiktighet. For eksempel kan rekursjon erstatte en while-løkke. La oss se på et eksempel på bruk av rekursjon for å beregne summen av alle tall opp til et tall som sendes 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() kaller seg selv med reduserte verdier. Vi har også et utgangspunkt fra denne rekursjonen når variabelen num blir null. Denne metoden beregner summen av alle tall fra 1 til parameteren, i vårt tilfelle 5. La oss se på flytskjemaet som viser hvordan rekursjon fungerer ved å bruke denne metoden som eksempel:

Eksempelet ovenfor viser hvordan metoden kaller seg selv med reduserte verdier, og når den når null, går den tilbake oppover ved å summere verdiene. Vi kan også observere hvordan kroppen til if-blokken utføres, der vi legger til num til resultatet av metodekallet med en redusert verdi. De mellomliggende verdiene etter hvert metodekall er angitt ved pilene.

Kan vi unngå å bruke rekursjon?

Rekursjon kan også erstattes med en vanlig løkke. La oss se på et eksempel der vi først bruker en rekursiv metode og deretter bruker en for-løkke for å utføre den samme operasjonen:

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; } }

Her ser vi hvordan vi erstatter vår rekursive metode med en vanlig for-løkke, der vi bruker variabelen i til å øke result med i hver gang til den når det angitte tallet num, som er parameteren i metoden.

Konklusjon

Avslutningsvis kan rekursive metoder være nyttige, men også risikable. Rekursjon kan ofte erstattes av løkker, og selv om det kan forenkle enkelte oppgaver, kan det også føre til problemer hvis det ikke brukes forsiktig. Dersom du velger å bruke rekursjon, selv med erfaring, bør du være varsom.

1. Hva er rekursjon i Java?

2. Hva er best å bruke, rekursjon eller en vanlig løkke?

question mark

Hva er rekursjon i Java?

Select the correct answer

question mark

Hva er best å bruke, rekursjon eller en vanlig løkke?

Select the correct answer

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 2. Kapittel 7

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

course content

Kursinnhold

Java Utvidet

Java Utvidet

1. Dyp Java-struktur
2. Metoder
3. Avansert Streng
4. Klasser
5. Avanserte Klasser

book
Rekursjon

Hvordan ødelegge koden din enkelt?

Hvorfor kan dette ødelegge koden? Fordi det kan føre til uendelig rekursjon, som vil bruke opp minnet og redusere enhetens ytelse. Så hvorfor trenger vi rekursjon i det hele tatt? I noen tilfeller kan rekursjon være nyttig, men det bør brukes med forsiktighet. For eksempel kan rekursjon erstatte en while-løkke. La oss se på et eksempel på bruk av rekursjon for å beregne summen av alle tall opp til et tall som sendes 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() kaller seg selv med reduserte verdier. Vi har også et utgangspunkt fra denne rekursjonen når variabelen num blir null. Denne metoden beregner summen av alle tall fra 1 til parameteren, i vårt tilfelle 5. La oss se på flytskjemaet som viser hvordan rekursjon fungerer ved å bruke denne metoden som eksempel:

Eksempelet ovenfor viser hvordan metoden kaller seg selv med reduserte verdier, og når den når null, går den tilbake oppover ved å summere verdiene. Vi kan også observere hvordan kroppen til if-blokken utføres, der vi legger til num til resultatet av metodekallet med en redusert verdi. De mellomliggende verdiene etter hvert metodekall er angitt ved pilene.

Kan vi unngå å bruke rekursjon?

Rekursjon kan også erstattes med en vanlig løkke. La oss se på et eksempel der vi først bruker en rekursiv metode og deretter bruker en for-løkke for å utføre den samme operasjonen:

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; } }

Her ser vi hvordan vi erstatter vår rekursive metode med en vanlig for-løkke, der vi bruker variabelen i til å øke result med i hver gang til den når det angitte tallet num, som er parameteren i metoden.

Konklusjon

Avslutningsvis kan rekursive metoder være nyttige, men også risikable. Rekursjon kan ofte erstattes av løkker, og selv om det kan forenkle enkelte oppgaver, kan det også føre til problemer hvis det ikke brukes forsiktig. Dersom du velger å bruke rekursjon, selv med erfaring, bør du være varsom.

1. Hva er rekursjon i Java?

2. Hva er best å bruke, rekursjon eller en vanlig løkke?

question mark

Hva er rekursjon i Java?

Select the correct answer

question mark

Hva er best å bruke, rekursjon eller en vanlig løkke?

Select the correct answer

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 2. Kapittel 7
some-alt