# Rekursionstiefe in Java



## districon (13. Dez 2020)

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.


```
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 (13. Dez 2020)

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)


----------

