Frage zur Rekursion

Dann hier mal ein anderes Beispiel, welches eigentlich leicht zu verstehen ist, nur einen Übergabeparameter hat und, wenn man es so formulieren möchte, eine schöne Rekursion ist. ;-)

Code:
public static String toBinary(Integer integer) {
   if (integer == 0) {
      return "0";
   }
   else
   {
      return toBinary(integer/2)+integer%2;
   }
}

MFG

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


Ähm ja, im Eifer des Gefechts ... Jetzt stimmt es.

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

ergo Ausgabe : 000000 ?
 
b/2 * 2 ==b wird vermutlich für nicht-komplexe Zahlen immer true (liest du dir eigentlich durch, was du da hinschreibst?

Einwurf: Nicht zwangsläufig :)
Schon mal was von Integer-Division gehört?

Möglicherweise musst du noch Klammern setzen, aber dann gilt definitiv, dass b geteilt durch 2 mal 2 nicht b sein muss <== nämlich für alle ungeraden Zahlen.
 
Dann hier mal ein anderes Beispiel, welches eigentlich leicht zu verstehen ist, nur einen Übergabeparameter hat und, wenn man es so formulieren möchte, eine schöne Rekursion ist.

Daran habe ich überhaupt nicht mehr gedacht, dass %2 ermittelt ob Rest oder kein Rest. Es vereinfacht meinen Code natürlich sehr.
Wird im Gedächtnis wohlwollend aufgenommen.

Vielen Dank.
 
Möglicherweise musst du noch Klammern setzen, aber dann gilt definitiv, dass b geteilt durch 2 mal 2 nicht b sein muss <== nämlich für alle ungeraden Zahlen.

Ja eben, das klappt genau so, wie es im Moment da steht. Die binäre Ausgabe haut 100% hin.
 
Das entspricht übrigens auch der Variante für Papier.
Zahl solange durch 2 teilen bis eine ungerade Zahl kommt.
Jedes Teilen mit einer 0 vermerken.
Kommt eine ungerade Zahl, 1 abziehen und 1 vermerken.

Was am Schluss rauskommt ist in umbedrehter Schreibweise die gesuchte Binärzahl.
(Und so kann man übrigens auch im Nachkomma-Bereich weitermachen)
 
Ähm leutz sacht mal... genau das habe ich schon auf der Seite vorn gepostet ;). Das Weglassen des zweiten Parameter ist allerdings schöner, stimmt. Können wir uns also drauf einigen, dass Saschas Variante:

Java:
public static String toBinary(Integer integer) {

   if (integer == 0) {
      return "0";
   }
   else
   {
      return toBinary(integer/2) + integer % 2;
   }
}

die sauberste und kürzeste ist?

REINHAUN!
 

Neue Beiträge

Zurück