Rekursionstiefe in Java

districon

Bekanntes Mitglied
Hallo nochmal,
Ich benötige leider nochmal hilfe bei einer Aufgabe. Als Fehlermeldung kommt bei mir, dass die Rekursionstiefe nicht stimmt. Sie sollten 2 sein, ist bei mir aber 1.
Die Aufgabe:
Die Methode delannoyMem bekommt zusätzlich noch long[][] mem als viertes Argument(das beim ersten Aufruf aus dem Test stets null ist) und berechnet Dn,k rekursiv aber unter Verwendung von Memoization, indem es mem mit neu berechneten Werten befüllt und bereits ermittelte Werte direkt aus mem ausliest. Opfern Sie einen zusätzlichen rekursiven Aufruf, um mem Ihrer Implementierung in passender Größe bereitzustellen.

Java:
public static long delannoyMem(TriboCheck t,int n, int k, long[][] mem) {
        t.checkTribo();

        for (n = 0; n < mem.length ; n++) {
            for (k = 0; k < mem.length ; k++){
                mem[n][k]= -1L;
            }
        }
        if (n == 0 || k == 0) {
            return 1;
        } else if (mem[n][k] != -1L) {
            return mem[n][k];
        } else {
            mem[n][k] = delannoyMem(t, n, k - 1,mem) + delannoyMem(t, n - 1, k - 1, mem) + delannoyMem(t, n - 1, k, mem);
            return mem[n][k];

Danke für jede Hilfe!
 

mrBrown

Super-Moderator
Mitarbeiter
Die Schleife in Zeile 4-8 ist auf jeden Fall Unsinn, damit überschreibst du alle Parameter.
Wenn mem beim ersten Aufruf null ist, fliegt dort auch eine NullPointerException (könnte der Grund für die falsche Rekursionstiefe sein, wäre dann aber eine seeehr schlechte Fehlermeldung)
 

Neue Themen


Oben