EA6

Ich kann schon folgendes anbieten:
1a) 22
1b) 8
1c) 39

Bei 1c habe ich 41. Der Rest ist gleich.

Hier mein Quellcode:

Code:
public class a {
 
    static int zaehlen = 0;
 
    public static void main(String args[]) {
        System.out.println(aa(6,3));
    }
 
    static int aa(int x, int y) {
        if (x <= 0 || y < 0) {
            return x - y + 2;
        }
        if (x % 2 == 0) {
            return aa(x / 2, y) + aa(x, y - 1);
        }
        return aa(x - 1, y - 2);
    }
 
}
 
Habt ihr bei den anderen Sachen schon was?

bei Aufgabe 2 hab ich

a) 11
b) 9
c)
in-order: 9+3*5-4+7*2/8*4-2+4*5
pre-order: +9+-*354*+*7/2-*84245
post-order: 935*4-7284*2-/*4+5*++
level-order: +9+-**4+535*47/2-*284

(hoff ich hab mich da jetzt nicht arg vertippt)

3a) 2,225

so, und weiter bin ich noch nicht, aber das sollte alles heute noch was werden - wenn der Regen hier in Berlin mich schon vom joggen abhält gibts im Hotel ja doch nichts besseres zu tun als lernen
 
3b): 1, 12, 1, 1, 14, 1

die meisten Methoden der Aufgabe 4 hab ich schon, mir ist nur das mit den statischen Methoden nicht wirklich klar. Soll ich dort das Werte-Array zusammenbauen, eine Kettenbruch-Instanz erzeugen und dann den Wert berechnen.. Da blick ich noch nicht ganz durch. Und falls es in der Newsgroup Hinweise gibt seh ich sie leider nicht. Mein Newsgroup-Reader hat Schwierigkeiten mit dem Hotel-WLAN ...
 
FRAGE: was spricht dagegen die Größe einer Liste (oder eines Stapels) in einer Variable zu speichern und dort mitzuverfolgen. Wenn ich dann die Größe wissen möchte kann ich ja dann einfach "nachschauen" und muss nicht immer alle Element durchlaufen und nachzählen. Welche Nachteile hat so eine Vorgehensweise? Irgendwelche Meinungen?
 
3b): 1, 12, 1, 1, 14, 1

die meisten Methoden der Aufgabe 4 hab ich schon, mir ist nur das mit den statischen Methoden nicht wirklich klar. Soll ich dort das Werte-Array zusammenbauen, eine Kettenbruch-Instanz erzeugen und dann den Wert berechnen.. Da blick ich noch nicht ganz durch. Und falls es in der Newsgroup Hinweise gibt seh ich sie leider nicht. Mein Newsgroup-Reader hat Schwierigkeiten mit dem Hotel-WLAN ...

Also ich habe das so gelöst. Hat auch richtige Werte zurückgegeben.
 
naja, ich hab im Grunde eine verkettete Liste gemacht bei der das oberste auch das erste Element ist. Dann hab ich mir das oberste zurückliefern lassen, den wert für das return gespeichert und dann das element entfernt. Wenn du eine genauere Beschreibung brauchst, dann schreib nochmal!
 
Bei 1c habe ich 41. Der Rest ist gleich.

Hier mein Quellcode:

Code:
public class a {
 
    static int zaehlen = 0;
 
    public static void main(String args[]) {
        System.out.println(aa(6,3));
    }
 
    static int aa(int x, int y) {
        if (x <= 0 || y < 0) {
            return x - y + 2;
        }
        if (x % 2 == 0) {
            return aa(x / 2, y) + aa(x, y - 1);
        }
        return aa(x - 1, y - 2);
    }
 
}

Allerdings müsste die Variable "zaehlen" innerhalb der Methode "aa" auch gezählt werden, z.B mit zaehlen++😉
Es kommen dann 22 Aufrufe raus
 
Oben