Ergebnis 1 bis 6 von 6

Java Rekursiver ggT

  1. #1 Zitieren
    General Avatar von Kirgo
    Registriert seit
    May 2009
    Ort
    An einem Ort wo Raum und Zeit Nebensachen sind.
    Beiträge
    3.747
    Hallo liebe Leute.
    Ich muss den ggT rekursiv berrechnen lassen.

    PHP-Code:
    public class Ggt {
        public static 
    int ggT(int aint b){
            if (
    a==|| b==0)
                return 
    0;
            if (
    a<0)
                
    a=a*-1;
            if (
    b<0)
                
    b=b*-1;
            if (
    a==b
               return(
    a);
           else{
               if (
    a>b
                   return(
    ggT(a-b,b));
               else 
                   return(
    ggT(b-a,a));
           }
        }
        public static 
    void main(String []args){
            
    int a=-10;
            
    int b=0;
            
    System.out.print(ggT(a,b));
        }

    Klappt alles soweit. Allerding fällt mir nicht ein wie ich den Sonderfall 0 in Zeile 3/4 abfangen soll.
    Wenn a oder b 0 ist dann soll ich irgendwas "returnen".
    Aber was? Die Eingaben selbst gehen ja nicht.
    0 zurückgeben ist glaube ich auch nicht so das wahre.
    Am Besten wäre es einen Text auszugeben aber das scheitere ich.
    Dann muss ich eine neue Variable initalisieren. Und dann muss ich die immer weiterreichen.

    Das die Rekusion immer wieder nach Sonderfällen prüft ist so gewollt. Soll heißen ist in dem Fall nicht schlimm.
    Kirgo ist offline

  2. #2 Zitieren
    Ritter Avatar von Delta 38
    Registriert seit
    Nov 2008
    Ort
    Bremen
    Beiträge
    1.251
    Du könntest eine IllegalArgumentException werfen:

    Code:
    if (a==0 || b==0) {
        throw new IllegalArgumentException("Eines der Argumente ist 0");  
    }
    In der main solltest du das dann natürlich über try/catch abfangen, sonst crasht dein Programm mit der Exception.
    Und noch was anderes: Man kann deinen Code dank der schlecht gewählten Farben nicht lesen. Bitte beim nächsten mal einfach kleine Farben benutzen oder daran denken, dass man dunkelblau auf graugrünem Grund nicht lesen kann

    Gruß Delta

    EDIT: Wenn ich das richtig sehe bildest du den Betrag für die Argumente, sodass die Funktion nie negative Teiler zurückgeben kann? Dann geb doch einfach -1 als Fehler zurück.
    Delta 38 ist offline

  3. #3 Zitieren
    General Avatar von Kirgo
    Registriert seit
    May 2009
    Ort
    An einem Ort wo Raum und Zeit Nebensachen sind.
    Beiträge
    3.747
    Zitat Zitat von Delta 38 Beitrag anzeigen
    Du könntest eine IllegalArgumentException werfen:

    Code:
    if (a==0 || b==0) {
        throw new IllegalArgumentException("Eines der Argumente ist 0");  
    }
    In der main solltest du das dann natürlich über try/catch abfangen, sonst crasht dein Programm mit der Exception.
    Und noch was anderes: Man kann deinen Code dank der schlecht gewählten Farben nicht lesen. Bitte beim nächsten mal einfach kleine Farben benutzen oder daran denken, dass man dunkelblau auf graugrünem Grund nicht lesen kann

    Gruß Delta

    EDIT: Wenn ich das richtig sehe bildest du den Betrag für die Argumente, sodass die Funktion nie negative Teiler zurückgeben kann? Dann geb doch einfach -1 als Fehler zurück.
    Danke für die Hilfe.
    Die Farben suche ich mir nie aus. Das macht der Post selbst.
    Kirgo ist offline

  4. #4 Zitieren
    Ehrengarde Avatar von Ewige Finsternis
    Registriert seit
    Sep 2008
    Beiträge
    2.659
    Zitat Zitat von Kirgo Beitrag anzeigen
    Danke für die Hilfe.
    Die Farben suche ich mir nie aus. Das macht der Post selbst.
    Ja, weil du deinen Code mit [php][/php] umklammerst anstatt mit [code][/code].


    Ewige Finsternis ist offline Geändert von Ewige Finsternis (14.01.2016 um 14:55 Uhr)

  5. #5 Zitieren
    Dea
    Registriert seit
    Jul 2007
    Beiträge
    10.447
    Zitat Zitat von Delta 38 Beitrag anzeigen
    Du könntest eine IllegalArgumentException werfen:

    Code:
    if (a==0 || b==0) {
        throw new IllegalArgumentException("Eines der Argumente ist 0");  
    }
    In der main solltest du das dann natürlich über try/catch abfangen, sonst crasht dein Programm mit der Exception.
    Und noch was anderes: Man kann deinen Code dank der schlecht gewählten Farben nicht lesen. Bitte beim nächsten mal einfach kleine Farben benutzen oder daran denken, dass man dunkelblau auf graugrünem Grund nicht lesen kann

    Gruß Delta

    EDIT: Wenn ich das richtig sehe bildest du den Betrag für die Argumente, sodass die Funktion nie negative Teiler zurückgeben kann? Dann geb doch einfach -1 als Fehler zurück.
    Das berechnet aber dann doch nicht das, was er möchte (nämlich den ggT).

    Wenn a==0 gilt, heißt dass, dass du den ggT gefunden hast, d.h. du kannst einfach b zurückgeben (und umgekehrt). Der nicht so besondere Sonderfall a==b brauch auch nicht extra behandelt zu werden, da er dann im nächsten Rekursionsschritt das richtige Ergebnis liefert.
    Lehona ist gerade online

  6. #6 Zitieren
    Legende Avatar von jabu
    Registriert seit
    Jul 2011
    Beiträge
    7.383
    Zitat Zitat von Lehona Beitrag anzeigen
    Das berechnet aber dann doch nicht das, was er möchte (nämlich den ggT).

    Wenn a==0 gilt, heißt dass, dass du den ggT gefunden hast, d.h. du kannst einfach b zurückgeben (und umgekehrt). Der nicht so besondere Sonderfall a==b brauch auch nicht extra behandelt zu werden, da er dann im nächsten Rekursionsschritt das richtige Ergebnis liefert.
    Exakt.
    jabu ist offline

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •