Java Code Verständnis

Diskutiere Java Code Verständnis im Java Basics - Anfänger-Themen Bereich.
M

Moritz1234

Java:
public class Fibanoci {

    public static void main(String[] args)
    {
        int zahl = 10;
        int [] array = new int[zahl+1];
        System.out.print(fib(zahl, array));
    }

    public static int fib(int n, int [] array)
    {
        if(n==0)
        {
            return 0;
        }
        else if(n==1)
        {
            return 1;
        }
        else
        {
            if(array[n]!=0)
            {
                return array[n];
            }
            else
            {
                array[n]=fib((n-1),array) + fib((n-2),array);
                return array[n];
            }

        }
    }

}
Guten Tag! Ich habe hier einen rekursiven Code zur Fibonacci Folge und verstehe ihn leider nicht gaanz so. Ich verstehe nicht wie das Programm am ende auf die Zahlen kommt, da das Array was in der main mitgegeben wird auf 0 gesetzt ist. Soweit ich weiss gebe ich dem Array nur die größe mit also 10? Verstehe auch nicht ganz wieso ich da [zahl+1] machen muss. Klingt vielleicht etwas blöd aber wie kommt den der auf die Zahl 55 am ende, wenn das Array nur 0 werte hat? Ich weiss im Grunde wie Fibanocci funktioniert aber kann den Code kaum nachvollziehen.

Danke im voraus falls mir das jemand für dummies erklären kann (bin Anfänger).
 
F

fhoffmann

Sinn des Arrays ist es, dass keine Werte doppelt berechnet werden müssen. Sobald ein Wert berechnet ist, wird er in dem Array gespeichert. Beim nächsten Aufruf wird er nicht neu berechnet, sondern aus dem Array gelesen (und zwar dann, wenn der Wert in dem Array größer als 0 ist).
 
L

LimDul

10 ist die (hartkodierte) Fibonacci-Zahl, die berechnet werden soll.

Wenn du du die Fibonacci Zahl 10 berechnest, hast du am Ende die Fibonacci Zahlen von 0 bis 10 berechnet - also 11 Stück. Deswegen braucht das Array eins mehr Platz als die Zahl.
 
Thema: 

Java Code Verständnis

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben