Frage zur Rekursion

Aber nicht bei Integer, denn da rundet er bei zB
43 /2 = 21


UPs. da oben hat sich Fehler eingeschlichen: es sollte heissen: if (b/2 * 2 ==b){
Um zu überprüfen, ob Rest oder nicht. Sorry
 
Zuletzt bearbeitet:
Jo, der Algorithmus sieht ja auch vor, dass ganzzahlig geteilt wird:

43 == 101011

Als StringBuilder Ersatz geht auch StringBuffer. Oder halt sogar String selbst, das ist dann allerdings nen Perfomanceloch ;)

REINHAUN!
 
Performance spielt bei mir in diesem Moment keine Rolle aber der Hinweis ist gut. Leider steht mir auch StringBuffer nicht zur Verfügung, lediglich String oder andere einfache Datentypen sollen das Problem lösen,... da liegt auch genau mein Problem :confused:

Wenn ich mal von der Liste absehe, kann ich mir das nur so vorstellen, dass ein String um jeweis die 0 oder 1 erweitert wird und das ganze rekursiv. Aber ich bekomms einfach nicht vernünftig implementiert.
 
Beispiel String
Vorne Anhängen
Code:
String s = "100101";
s = 1+s;

Hinten anhängen
Code:
String s = "100101";
s = s+1; // oder kurze Schreibweise: s+=1;

MFG

Sascha
 
Also so?
Code:
 public String umwand(String s,int b){
   if (b>0){
   if (b/2 * 2 ==b){
     s.anfuegen("0");
     return umwand(s,b/10);
     }
   else {
     s.anfuegen("1");
     return umwand(s,b/10);
   }
   }
   return s;
 }

s.anfuegen steht im Moment fürs anfügen, da ich grad nicht weiss, wie man Strings erweitert.
 
Ich versteh ehrlich gesagt nicht, warum du nicht einfach meinen Code nimmst, StringBuilder durch String ersetzt und den insert einfach in (integer % 2) + builder (<-variablenname) machst!?

Gruß
Ollie
 
s.anfuegen steht im Moment fürs anfügen, da ich grad nicht weiss, wie man Strings erweitert.

Schau das was Olli gesagt hat, bzw beachte mal meinen letzten Beitrag. Da hab ich gezeigt, wie man vorne oder auch hinten was einfügt.

MFG

Sascha
 
Jetzt erschlägt mich aber der Blitz! Natürlich,.. ganz einfach.

Code:
   public String toBinary(String s,int b){
   if (b>0){
   if (b/2 * 2 ==b){
     s=0+s;
     return umwand(s,b/2);
     }
   else {
     s=1+s;
     return umwand(s,b/2);
   }
   }
   return s;
 }

Ich habe so einiges verdreht. Und das bei meiner nahen Lösung durch die iterative Methode.

Ich danke für die Hilfe (und Geduld) :)
Danke
 
Nunja... warum einfach, wenn es auch kompliziert geht? Welcher Code ist wohl einfacher zu verstehen? ;). Zumal jetz noch mehr Fehler drin sind:

- b/2 * 2 ==b wird vermutlich für nicht-komplexe Zahlen immer true (liest du dir eigentlich durch, was du da hinschreibst? ;) )
- was ist umwand(..)?

REINHAUN!
 

Neue Beiträge

Zurück