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

Kursusindhold

Java Udvidet

Java Udvidet

1. Dyb Java-Struktur
2. Metoder
3. String Avanceret
4. Klasser
5. Avancerede Klasser

book
Rekursion

Hvordan kan du nemt ødelægge din kode?

Hvorfor kan dette ødelægge koden? Fordi det kan føre til uendelig rekursion, hvilket vil forbruge hukommelse uden stop og nedsætte enhedens ydeevne. Så hvorfor har vi overhovedet brug for rekursion? I visse tilfælde kan rekursion være nyttigt, men det skal anvendes med forsigtighed. For eksempel kan rekursion erstatte et while-loop. Lad os se på et eksempel, hvor rekursion bruges til at beregne summen af alle tal op til et tal, der gives 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() kalder sig selv med reducerede værdier. Vi har også et udgangspunkt fra denne rekursion, når variablen num bliver nul. Denne metode beregner summen af alle tal fra 1 til parameteren, i dette tilfælde 5. Lad os se på et flowchart, der viser, hvordan rekursion fungerer ved hjælp af denne metode som eksempel:

Eksemplet ovenfor demonstrerer, hvordan metoden kalder sig selv med reducerede værdier, og når den når nul, går den tilbage opad ved at summere værdierne. Vi kan også observere, hvordan kroppen af if-blokken udføres, hvor vi lægger num til resultatet af metodekaldet med en reduceret værdi. De mellemliggende værdier efter hvert metodekald er angivet nær pilene.

Kan vi undgå at bruge rekursion?

Rekursion kan også erstattes med et almindeligt loop. Lad os se på et eksempel, hvor vi først bruger en rekursiv metode og derefter bruger et for-loop til at udføre den samme 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; } }

Her kan vi se, hvordan vi erstatter vores rekursive metode med et almindeligt for-loop, hvor vi bruger variablen i til at øge vores result med i hver gang, indtil det når det angivne tal num, som er parameteren i metoden.

Konklusion

Afslutningsvis kan rekursive metoder være nyttige, men også risikable. Rekursion kan ofte erstattes af loops, og selvom det kan forenkle visse opgaver, kan det også give problemer, hvis det ikke bruges omhyggeligt. Hvis du vælger at bruge rekursion, selv med erfaring, bør du altid være forsigtig.

1. Hvad er rekursion i Java?

2. Hvilken er bedre at bruge, rekursion eller et almindeligt loop?

question mark

Hvad er rekursion i Java?

Select the correct answer

question mark

Hvilken er bedre at bruge, rekursion eller et almindeligt loop?

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 2. Kapitel 7

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

course content

Kursusindhold

Java Udvidet

Java Udvidet

1. Dyb Java-Struktur
2. Metoder
3. String Avanceret
4. Klasser
5. Avancerede Klasser

book
Rekursion

Hvordan kan du nemt ødelægge din kode?

Hvorfor kan dette ødelægge koden? Fordi det kan føre til uendelig rekursion, hvilket vil forbruge hukommelse uden stop og nedsætte enhedens ydeevne. Så hvorfor har vi overhovedet brug for rekursion? I visse tilfælde kan rekursion være nyttigt, men det skal anvendes med forsigtighed. For eksempel kan rekursion erstatte et while-loop. Lad os se på et eksempel, hvor rekursion bruges til at beregne summen af alle tal op til et tal, der gives 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() kalder sig selv med reducerede værdier. Vi har også et udgangspunkt fra denne rekursion, når variablen num bliver nul. Denne metode beregner summen af alle tal fra 1 til parameteren, i dette tilfælde 5. Lad os se på et flowchart, der viser, hvordan rekursion fungerer ved hjælp af denne metode som eksempel:

Eksemplet ovenfor demonstrerer, hvordan metoden kalder sig selv med reducerede værdier, og når den når nul, går den tilbage opad ved at summere værdierne. Vi kan også observere, hvordan kroppen af if-blokken udføres, hvor vi lægger num til resultatet af metodekaldet med en reduceret værdi. De mellemliggende værdier efter hvert metodekald er angivet nær pilene.

Kan vi undgå at bruge rekursion?

Rekursion kan også erstattes med et almindeligt loop. Lad os se på et eksempel, hvor vi først bruger en rekursiv metode og derefter bruger et for-loop til at udføre den samme 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; } }

Her kan vi se, hvordan vi erstatter vores rekursive metode med et almindeligt for-loop, hvor vi bruger variablen i til at øge vores result med i hver gang, indtil det når det angivne tal num, som er parameteren i metoden.

Konklusion

Afslutningsvis kan rekursive metoder være nyttige, men også risikable. Rekursion kan ofte erstattes af loops, og selvom det kan forenkle visse opgaver, kan det også give problemer, hvis det ikke bruges omhyggeligt. Hvis du vælger at bruge rekursion, selv med erfaring, bør du altid være forsigtig.

1. Hvad er rekursion i Java?

2. Hvilken er bedre at bruge, rekursion eller et almindeligt loop?

question mark

Hvad er rekursion i Java?

Select the correct answer

question mark

Hvilken er bedre at bruge, rekursion eller et almindeligt loop?

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 2. Kapitel 7
some-alt