Rekursion Allgemeine Fragen

derfreak

Mitglied
Hallo alle Zusammen,

ich bin derzeitig dran das Thema Rekursion zu verstehen, leider habe ich einige Schwierigkeiten.

Was ich bis jetzt weiß, ist das Rekursionen ohne Schleifen auskommen können.
Stattdessen benutzten sie Ihre eigene Methode oder eine Hilfsmethode immer und immer wieder.

(Aufgabenstellung : Given a non-negative int n, return the count of the occurrences of 7 as a digit, so for example 717 yields 2. (no loops))
Wenn ich jetzt das Beispiel von CodingBat nehme : count7.
Verstehe ich was von mir verlangt wird. Leider ist die Umsetzung etwas schwer.

Die Lösung habe ich mir auch schon angeguckt, leider habe ich sie nicht ganz verstanden.
Java:
public int count7(int n) {
  if (n < 1) return 0;
  if (n % 10 == 7) return 1 + count7(n/10);
  else return count7(n/10);
}

Bei der zweiten if-Abfrage wird mit count7(n/10) addiert, ich kann mir leider nicht ganz vorstellen was da gemacht wird.
Kann mir jemand erklären, was in der Aufgabe Stück für Stück passiert und was es mit dem addieren von count7(n/10) auf sich hat?

----------------------------------------------------------------------------------
Ich habe mir das so vorgestellt:
Beispiel n = 717

- Kontrolliert ob n < 1 ist wenn ja, return 0;
- Kontrolliere ob der Rest-Wert von n gleich 7 ist [Also der letzte Wert 717] wenn ja, return 1 + count7(717 / 10);
SO ab hier wird dann count7(717 /10) ausgeführt es entsteht count7(71 / 10) daraus entsteht count7(7), Bedingung wird wieder erfüllt, warum wird nun count7(7) == 1 gesetzt?
- und wenn jetzt beispielsweise nicht 717 zutrifft sondern beispielsweise 71 dann wird
count7(71/10) --> count7(7) --> Bedingung erfüllt bei der zweiten if-Anweisung, return 1 + was?


Wie ihr sieht, verstehe ich nicht ganz was zwischen den Zeilen passiert.
Ich wäre sehr dankbar wenn mir das jemand gut erklären kann.

VIELEN DANK! :)
 
Zuletzt bearbeitet:

stg

Top Contributor
Denk einfach noch einen Schritt weiter. Du hast es ja fast... Was passiert, wenn
Code:
count7(7)
aufgerufen wird? 7 modulo 10 ist 7, also ist die Bedingung in der zweiten if-Abfrage erfüllt und es wird
Code:
1+count7(7 / 10)
zurückgegeben. 7/10 ist aber 0, sofern wir mit Integer rechnen, also wird count7 mit n=0 aufgerufen... Nun ist count7(0) = 0, also ist count7(7) = 1 + count7(0) = 1 + 0 = 1, also ist count7(71) = ... usw
 

derfreak

Mitglied
Denk einfach noch einen Schritt weiter. Du hast es ja fast... Was passiert, wenn
Code:
count7(7)
aufgerufen wird? 7 modulo 10 ist 7, also ist die Bedingung in der zweiten if-Abfrage erfüllt und es wird
Code:
1+count7(7 / 10)
zurückgegeben. 7/10 ist aber 0, sofern wir mit Integer rechnen, also wird count7 mit n=0 aufgerufen... Nun ist count7(0) = 0, also ist count7(7) = 1 + count7(0) = 1 + 0 = 1, also ist count7(71) = ... usw

Aso Vielen Dank :)

Eine Frage hätte ich da noch:
# Das heißt count7() <-- dieser Aufruf wird immer solange ausgerufen bis "umgangssprachlich" zu einer ganzen Zahl wird?

# Wenn wir jetzt davon ausgehen das n = 77 ist, würde er wieder in die zweite If-Anweisung gehen,
dann 1 + count7(77/10) zurückgeben. // Da wir noch keine ganze Zahl für count7 haben, ruft die Methode sich selber wieder auf. Zweite If-Anweisung wird wieder erfüllt, rechnen wir JETZT 1+1+count7(7/10), nun geht es nicht mehr weiter und count7 wird auf 0 gesetzt da 7 / 10 = 0 ist bei Int. Das heißt 1+1 wird ausgerechnet und man hat 2.

Ist das so richtig? Also wird die grüne eins die man zuvor hatte erneut mit genommen und dann dazu gerechnet?

PS: Ich glaube wenn ich eine Variable genommen hätte, wäre es mit vllt schneller so eingefallen.
Ich bin davon ausgegangen, dass die grüne eins einfach verschwindet, weil sie ja nicht zugewiesen wurde... :/
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
K Verstehe Rekursion nicht ganz Java Basics - Anfänger-Themen 7
P Frage zu Rekursion und Backtracking Java Basics - Anfänger-Themen 2
DiyarcanZeren Rekursion in Java Java Basics - Anfänger-Themen 5
M Variablen Rekursion mit 2 Parameteren Java Basics - Anfänger-Themen 4
sserio Rekursion größten Primfaktor finden funktioniert nicht Java Basics - Anfänger-Themen 8
M Lösungsweg Rekursion Java Basics - Anfänger-Themen 1
C StackOverflow bei Rekursion Java Basics - Anfänger-Themen 7
D Rekursion - Ich raffs nicht Java Basics - Anfänger-Themen 16
N Methoden Rekursion mit Kreisen Java Basics - Anfänger-Themen 7
P9cman Vokale in einem String überprüfen mittels Rekursion Java Basics - Anfänger-Themen 8
J Rekursion Java Basics - Anfänger-Themen 22
T Rekursion Programmierverständnis Java Basics - Anfänger-Themen 12
K Rekursion: Rechenmauer mit Array erstellen Java Basics - Anfänger-Themen 17
K Rekursion einer Zahlenfolge (Ab- und Aufzählung) Java Basics - Anfänger-Themen 6
Zeppi Rekursion Java Basics - Anfänger-Themen 15
V Backtracking und Rekursion Java Basics - Anfänger-Themen 15
L REKURSION Java Basics - Anfänger-Themen 13
Kirby.exe Rekursion Java Basics - Anfänger-Themen 7
N for Schleife durch Rekursion ersetzen Java Basics - Anfänger-Themen 6
X Rekursion Java Basics - Anfänger-Themen 3
H Rekursion Java Basics - Anfänger-Themen 2
D Erste Schritte Rekursion Java Basics - Anfänger-Themen 13
M Rekursion Tage Ansteckung gesamte Bevölkerung Java Basics - Anfänger-Themen 15
M Java Rekursion Java Basics - Anfänger-Themen 9
G Java Rekursion Java Basics - Anfänger-Themen 5
J Rekursion Klausur Aufgabe Java Basics - Anfänger-Themen 2
N Rekursion Java Basics - Anfänger-Themen 18
M Verständnisproblem der Rekursion bei Arrays Java Basics - Anfänger-Themen 8
X Rekursion Rätsel Java Basics - Anfänger-Themen 4
N Klassen Rekursion mit Feldern von Objekten Java Basics - Anfänger-Themen 14
W Rekursion Java Basics - Anfänger-Themen 0
D Konsolenausgabe Zahlenfolge Rekursion Java Basics - Anfänger-Themen 3
J Ping Pong Methode mit Rekursion Java Basics - Anfänger-Themen 1
N Rekursion Java Basics - Anfänger-Themen 1
B Rekursion Basic Java Basics - Anfänger-Themen 15
O Rekursion Mergesort Java Basics - Anfänger-Themen 18
G Rekursion Java Basics - Anfänger-Themen 20
M Rekursion Java Basics - Anfänger-Themen 7
F Hilfe bei Rekursion... Java Basics - Anfänger-Themen 4
A Mit Rekursion Zufallszahlen erstellen und größte finden Java Basics - Anfänger-Themen 5
B Rekursion Wurzel Java Basics - Anfänger-Themen 39
O Rekursion ordentlich aufschreiben Java Basics - Anfänger-Themen 2
B Rekursion verstehen Java Basics - Anfänger-Themen 4
O Rekursion Java Basics - Anfänger-Themen 2
E Rekursion verstehen. Java Basics - Anfänger-Themen 4
E Rekursion Kisten befüllen Java Basics - Anfänger-Themen 10
E Rekursion verstehen Java Basics - Anfänger-Themen 2
O Rekursion, String Java Basics - Anfänger-Themen 8
N Invertierte Rekursion??? Java Basics - Anfänger-Themen 5
M Bitte um Hilfe bei Quellcode (Rekursion) Java Basics - Anfänger-Themen 6
T Rekursion Warum bricht meine Funktion nicht ab Java Basics - Anfänger-Themen 4
A Hilfe bei Rekursion,Ich verstehe nicht,wie funktioniert die Rekursion in der Methode "walk" Java Basics - Anfänger-Themen 13
L Rekursion im Baum Java Basics - Anfänger-Themen 9
E Pfade eines Baums angeben ohne Rekursion Java Basics - Anfänger-Themen 20
L Rekursion Baumknoten Java Basics - Anfänger-Themen 8
L Rekursion größtes Zeichen Java Basics - Anfänger-Themen 8
L Rekursion Modulo Java Basics - Anfänger-Themen 7
I Rekursion Java Basics - Anfänger-Themen 11
H Rekursion Java Basics - Anfänger-Themen 7
N Methoden zur Rekursion (catalansche Zahlen) Java Basics - Anfänger-Themen 4
S Frage zu Rekursion... Java Basics - Anfänger-Themen 15
N Java catalansche Zahlen (Rekursion) Java Basics - Anfänger-Themen 5
S Noch eine Frage zur Rekursion... Java Basics - Anfänger-Themen 11
S Frage zu einer Rekursion Java Basics - Anfänger-Themen 15
F Methoden Abbruchbedingung bei Rekursion Java Basics - Anfänger-Themen 2
Z Rekursion Primzahlen Java Basics - Anfänger-Themen 1
K Rekursion Verständnisfrage Java Basics - Anfänger-Themen 19
L Methoden Rekursion gibt alten Wert wieder Java Basics - Anfänger-Themen 37
M Rekursion Minimums Suche Java Basics - Anfänger-Themen 12
J Rekursion Java Basics - Anfänger-Themen 5
F Aufgabe Rekursion Binärer Baum Java Basics - Anfänger-Themen 15
N Rekursion Java Basics - Anfänger-Themen 2
B Rekursion - Übung Java Basics - Anfänger-Themen 2
B Problem beim grundsätzlichen Verständnis bei Rekursion mit 2-dimensionalen Array Java Basics - Anfänger-Themen 6
P Rekursion Java Basics - Anfänger-Themen 19
G Rekursion Beispiel Java Basics - Anfänger-Themen 3
M Rekursion schreiben Java Basics - Anfänger-Themen 16
A Rekursion Funktion in eine Iterativ Funktion umwandeln Java Basics - Anfänger-Themen 9
T Array Rekursion Java Basics - Anfänger-Themen 1
B lineare und schlichte Rekursion Java Basics - Anfänger-Themen 1
A Rekursion Java Basics - Anfänger-Themen 2
B Rekursion Java Basics - Anfänger-Themen 3
A Rekursion stoppt an der falschen Stelle Java Basics - Anfänger-Themen 4
A Lineare Rekursion Java Basics - Anfänger-Themen 6
P Hilfe zur Rekursion? Java Basics - Anfänger-Themen 2
B Rekursion Schneeflocke - Kurze Frage zur Methode Java Basics - Anfänger-Themen 11
L Rekursion Java Basics - Anfänger-Themen 4
S Rekursion Rückgabe - Türme von Hanoi Java Basics - Anfänger-Themen 16
kilopack15 Rekursion und Schleifen Java Basics - Anfänger-Themen 27
E Rekursion Java Basics - Anfänger-Themen 10
G rekursion nicht verstanden Java Basics - Anfänger-Themen 5
K Rekursion-Verständnisfrage Java Basics - Anfänger-Themen 4
E Methoden String wird in Rekursion nicht überschrieben Java Basics - Anfänger-Themen 2
T 2fach Rekursion. Java Basics - Anfänger-Themen 4
N Rekursion mit if-Anweisung Java Basics - Anfänger-Themen 10
K Methoden Zahlensysteme umwandeln mittels Rekursion Java Basics - Anfänger-Themen 5
H Rekursion Binäre Suche Java Basics - Anfänger-Themen 2
P Methoden Primzahltest mit Rekursion Java Basics - Anfänger-Themen 3
C Rekursion überführen in eine normale methode Java Basics - Anfänger-Themen 1
M Methoden Rekursion nachvollziehen Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben