Static void Methode

steeeeel

Mitglied
Hallo, ich habe hier folgendes Programm geschrieben :

class hornerumkehrung{
public static void main (String [] args){
int a=Integer.parseInt(args[0]);
int b=Integer.parseInt(args[1]);

Rekursivmethode(a,b);
}


public static void Rekursivmethode (c,d){
if (c>0){
if(c%2==1){
System.out.prntln(1);
return;
}
System.out.println(0);
c=c/d;
Rekursivmethode(c,d);
return;
}
else{
return;}
}

}


Nun habe ich folgendes Problem... ich weiß nicht wie ich die beiden Eingabewerte a und b in die void Methode bekomme.... Da wird jedes mal eine neue Deklaration verlang. Also c soll die Eingabe a sein und d die Eingabe b ....
LG
 
1.)
icon4.gif
Java™ Quelltext ist bitte in
Java:
[/B]-Tags zu schreiben:[/SIZE] [noparse][code=Java]hier Java Code einfügen
[/noparse]


2.) du musst methoden schon richtig definieren. Kleiner Hinweis: welchen Typ haben die Parameter [c]c[/c] und [c]d[/c] (haben sie bei dir überhaupt einen ;-)) + welchen sollten sie haben?

3.) Konventionen einhalten: Klassen werden UpperCamelCase geschrieben, Methoden/Felder lowerCamelCase (siehe link in meiner Signatur)
 
Java:
class hornerumkehrung{
   public static void main (String [] args){
      int a=Integer.parseInt(args[0]);
      int b=Integer.parseInt(args[1]);
      Rekursivmethode(a,b);
   }

   public static void Rekursivmethode (int c, int d){
      if (c>0){
         if(c%2==1){
            System.out.prntln(1);
            return;
         }
         System.out.println(0);
         c=c/d;
         Rekursivmethode(c,d);
         return;
      } else{
         return;
      }
   }
}
 
Ne rekursive Methode ohne Rückgabewert?
Kann sowas überhaupt Sinn machen?
Ich zweifle.
 
1.)
icon4.gif
Java™ Quelltext ist bitte in
Java:
[/B]-Tags zu schreiben:[/SIZE] [noparse][code=Java]hier Java Code einfügen
[/noparse]


2.) du musst methoden schon richtig definieren. Kleiner Hinweis: welchen Typ haben die Parameter [c]c[/c] und [c]d[/c] (haben sie bei dir überhaupt einen ;-)) + welchen sollten sie haben?

3.) Konventionen einhalten: Klassen werden UpperCamelCase geschrieben, Methoden/Felder lowerCamelCase (siehe link in meiner Signatur)


Also ist es denn notwendig ?? es handelt sich um 2 positive ganze Zahlen die eingegeben werden um mit diese das umgekehrte Horner-Schema zu durchlaufen . Variabel ist dabei nur a denn b bleibt im laufe des Programms konstant....
 
Also damit du an einer Methode Variabel entgegen nehmen kannst musst du Definieren welcher Type sie sind, da Java streng Typisiert ist.

Also muss deine method so aussehen:
Java:
public static void rekursiv(int a, int b){
   // ...
}

Dabei werden die Variablen als Call by Value übergeben und bei der Übergabe Kopiert, das heißt wenn die Variable a in der Methode änderst, wird a nicht in der main Methode geändert sonder behält den Wert!
 
Also damit du an einer Methode Variabel entgegen nehmen kannst musst du Definieren welcher Type sie sind, da Java streng Typisiert ist.

Also muss deine method so aussehen:
Java:
public static void rekursiv(int a, int b){
   // ...
}

Dabei werden die Variablen als Call by Value übergeben und bei der Übergabe Kopiert, das heißt wenn die Variable a in der Methode änderst, wird a nicht in der main Methode geändert sonder behält den Wert!

Das Ergebnis stimmt, die Herleitung aber nicht. 🙂

Kopiert werden sie in dem Sinne nicht, Fakt ist aber halt, das Integer immutable ist. Und da Java immer Call-by-Value macht ist es nicht möglich die Referenz des Parameters zu ändern.

Und eine rekursive Methode ohne Rückgabe kann auch Sinn machen.

Java:
void doRecursive(List<String> data, int index){
    if(index > 0){
        doRecursive(data, index-1);
    }
    data.add("blahblub");
}
 
Also ist es denn notwendig ?? es handelt sich um 2 positive ganze Zahlen die eingegeben werden um mit diese das umgekehrte Horner-Schema zu durchlaufen . Variabel ist dabei nur a denn b bleibt im laufe des Programms konstant....

Woher soll den Java sonst wissen, welcher Typ erwartet wird? Einfaches Beispiel:
[c]someMethod(a)[/c]
Was erwartete die Methode?

Dabei werden die Variablen als Call by Value übergeben und bei der Übergabe Kopiert, das heißt wenn die Variable a in der Methode änderst, wird a nicht in der main Methode geändert sonder behält den Wert!

Jein. Bei primitiven Datentypen wird der Wert und bei komplexen Objekten die Adresse mitgegeben von der aus dereferenziert werden kann.
 
.. oder direkt auf der Console ausgibt... und das macht Sinn ?? wirklich ??

warum nicht? türme von hanoi z.b. oder viele andere übungen zu rekursionen kann man direkt auf der console ausgeben.

KSG9|sebastian hat dir ja noch ein drittes bsp genannt. aber ist ja eigentlich auch egal 😉. fand nur die aussage etwas fragwürdig, dass eine void-rekursion total sinnfrei ist
 

Zurück
Oben