Konvertieren von Dezimal zu Binär mit Rekursion Java
Ich versuche einfach in Binary konvertieren mit Rekursion. Ich habe Probleme mit der return-Anweisung. Dies stellt aber einen überlauffehler geben, wenn Sie ausgeführt wird. Ich weiß nicht, was zum zurückgeben (oder, wenn meine Aussage falsch ist) um diesen Fehler zu vermeiden.
Dank!
public static String convertToBinary(int number)
{
if(number > 0)
{
convertToBinary(number / 2);
convertToBinary((number % 2 ));
}
return convertToBinary((number));
}
- Ist dieses Hausaufgaben? (vorausgesetzt, es ist), bitte markieren Sie Sie als solche.
- Sie brauchen eine Basis Fall. Dieser läuft einfach ewig (oder versucht zu bis trifft es einen überlauf).
- Unabhängig davon, dass eine Basis-Fall ist oder nicht, die Letzte Zeile ruft sich selbst mit den gleichen Argumenten, so ändert sich nichts in der nächsten Ebene nach unten.
- Das auch. Jetzt ist es gar nicht dorthin.
- Sie bereits binäre.
int number
ist schon binäre. Deine Frage macht keinen Sinn.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dein problem wurde Berufung convertToBinary auf beiden Anzahl/2 und Nummer%2 glaube ich. Dieser code funktioniert bei mir gut und ist nicht so Verschieden von dem, was Sie hatte:
Gut, das problem scheint zu sein, dass Sie nicht wirklich etwas zu tun in Ihrer rekursiven Methode.
In seiner einfachsten form ist Ihre rekursive Methode sollte enthalten:
(Das ist eine grob vereinfachte Sicht, aber es wird nicht für jetzt.)
Das problem ist, dass Sie ' re fehlen einige escape-Bedingungen zu behandeln, die bei der parameter ein einzelnes bit lang, das ist, wenn Sie nicht unterteilen, es nicht mehr.
Dem anderen problem mit deinem code ist, dass Sie sind nicht etwas zu tun mit dem Ergebnis des rekursiven Aufrufe. Speichern Sie und verketten Sie Sie.
Ich schlage vor, Sie beginnen wieder: schreiben Sie eine Methode, die konvertiert ein einzelnes bit zuerst (dies wird nicht rekursiv), dann fügen Sie die Rekursion zu. (Ein allgemeiner Tipp: scheuen Sie nicht wegwerfen, code und beginnen wieder von vorne.)
Sofern diese Hausaufgaben ich werde darauf hinweisen, die wichtigsten Fehler..
Die Rücksendung sollte einen Wert zurückgeben, nicht eine Funktion aufrufen. Dies wird nur hinzufügen eine rekursive Zustand-stacks, die führt zu Ihr überlaufen. Versuchen Sie die Speicherung der Werte aus dem vorherigen Anrufe in eine variable und zurück.
Wenn dies ist nicht für Hausaufgaben -, sollten Sie entweder:
http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html#toBinaryString%28int%29
oder
http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html#toString%28int,%20int%29
Einmal
number
null erreicht, wird die Methode einfach aufrufen, sich immer und immer wieder. Die endgültigereturn
zurückgeben muss, etwas anderes - wie eine Schnur. Having said that, ich nicht denke, dieser Ansatz ist furchtbar optimal.number
ist.Versuchen unten:
Funktioniert es, aber Sie haben, um es zu drucken aus dem Ende
Folgenden arbeiten rekursiv. Wenn Zahl negativ ist, wird es fügen Sie "-" als Präfix zu führen.
Ich habe versucht, zu erstellen eine generische sub-routine, die dauert eine Dezimale ganze Zahl & konvertieren erforderlich BASIS.
Achtung:- Es funktioniert nicht für negative zahlen.
Fügen Sie einfach die binäre Umwandlung (Anzahl/2*10), um den Rest der Nummer:
Hier ist meine Lösung:
Spaß haben
Integer.parseInt()
schon funktioniert die dezimal zu Binär-Konvertierung. Der rest ist nur eine Verschwendung von Zeit. Jedoch Kredit über die Antwort nur so weit, dass man erkennt, dass die Eingabe nicht einint
.