Rekursion

Diskutiere Rekursion im Java Basics - Anfänger-Themen Bereich.
X

xijonathan

Hallo zusammen.
Vielleicht kann mir ja jemand kurz etwas zur Rekursion erklären. Ich versuche gerade rekursiv eine Kommazahl (die mit einer 0,.. beginnt) in eine Binährzahl umzurechnen. Jetzt stoße ich auf ein Problem:
die Methode gibt einen String zurück und in diesem String soll ich auch die Binährzahl speichern. Wenn ich dann nun rekursiv die Methode wieder aufrufe will ich einerseits, dass die Werte die rauskommen(also meine Nullen und Einsen) im String gespeichert werden und gleichzeitig meine anderer Wert (also die Zahl mit der ich weiter rechne) auch zurückgeben wird. Wie weiß ich also was in den String returned wird und was zurück aufgrund der Rekursion geht.

beste Grüße und ich hoffe jemand kann mir das erklären :)
 
MoxxiManagarm

MoxxiManagarm

Nein, Rekursion basiert auf dem Teile- und Herrsche Prinzip. Du rechnest nicht nach der Rekursion weiter, sondern du teilst dein Problem in ein direkt lösbares und in ein Rekursiv lösbares Problem (manchmal auch mehrere rekursive Teilprobleme). Alle Ergebnisse führst du nur noch zusammen.

Das direkt Lösbare Teilproblem resultiert bei dir in ein Digit, die Rekursion gibt dir alle anderen Digits in einem String.
Java:
public static String fractureToBinary(double num) {
  // 1. Abbruchbedingung
  // 2. Berechnung der aktuellen Ziffer 0 oder 1 (ich nenne das Ergebnis s), direkt lösbares Teilproblem
  // 3. Festlegen des Parameters für den rekursiven Aufruf (ich nenne das Ergebnis neueNum)

  return s + fractureToBinary(neueNum);
}
 
Zuletzt bearbeitet:
MoxxiManagarm

MoxxiManagarm

Ich möchte dir außerdem noch ein Fallbeispiel an die Hand geben. Jede Zeile sei hier ein Rekursionsschritt. Bestimmt hilft dir das.

numrsKommentar
0.6251.251s = 1 weil r > 1
0.250.50s = 0 weil r < 1
0.511s = 1 weil r = 1, Abbruch könnte je nach Implementierung auch hier schon stattfinden
0Abbruch

0.625 --> 0.101
 
Thema: 

Rekursion

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben