Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Ich möchte mit Recursion klar kommen, daher mache ich kleine Aufgaben, in diesem Fall wird immer 1 ausgegeben. Wenn ich in diese Zeilen 5 und 10 System.out.print(binary) einfüge, dann ist richtige Ausgabe 10111.
Vielen Dank für die nette Antwort, das ist jetzt klar, woran das liegt. Wenn du für mich Vorschläge hättest, wie ich Code umschreiben soll, um gewünschtes Ergebnis zu bekommen, würde mir sehr geholfen. Vielen Dank im Voraus
Das ist auch schon der rekursive Abstieg, der endet, wenn das Ergebnis der ganzzahligen Division 0 ist. Am Ende werden die Reste von unten nach oben zu einem binären Wort zusammengesetzt: 1000 - das entspricht dem rekursiven Aufstieg.
Noch genauer betrachtet steigen wir erstmal ab, bis das Ergebnis der ganzzahligen Division 0 ist. Dann ermitteln wir in jedem Schritt die binäre Ziffer (Rest) und hängen sie an die bisher ermittelten.
Mal ganz ausführlich:
Java:
public static String getBinaryRecursive(int number) {
String word = "";
if (number > 1) {
word = getBinaryRecursive(number / 2);
}
String digit = "1";
if (number % 2 == 0) {
digit = "0";
}
return word + digit;
}
und kurz:
Java:
public static String getBinaryRecursive(int number) {
String word = number > 1 ? getBinaryRecursive(number / 2) : "";
String digit = number % 2 == 0 ? "0" : "1";
return word + digit;
}
Das ist auch schon der rekursive Abstieg, der endet, wenn das Ergebnis der ganzzahligen Division 0 ist. Am Ende werden die Reste von unten nach oben zu einem binären Wort zusammengesetzt: 1000 - das entspricht dem rekursiven Aufstieg.
Noch genauer betrachtet steigen wir erstmal ab, bis das Ergebnis der ganzzahligen Division 0 ist. Dann ermitteln wir in jedem Schritt die binäre Ziffer (Rest) und hängen sie an die bisher ermittelten.
Mal ganz ausführlich:
Java:
public static String getBinaryRecursive(int number) {
String word = "";
if (number > 1) {
word = getBinaryRecursive(number / 2);
}
String digit = "1";
if (number % 2 == 0) {
digit = "0";
}
return word + digit;
}
und kurz:
Java:
public static String getBinaryRecursive(int number) {
String word = number > 1 ? getBinaryRecursive(number / 2) : "";
String digit = number % 2 == 0 ? "0" : "1";
return word + digit;
}