Fibonacci -Folge rekursiv berechnen

Moin Leute,
da bin ich wieder mit einem neuen Problem. :( Habe im Forum nachgeschaut aber keinen passenden Ansatz gefunden.
Ich habe die Aufgabe eine Fibonacci-Folge durch rekursive Methodenaufrufe zu berechnen. Rekursive Berechnung der Fibonacci-Folge dieser Form kann ich nachvollziehen.
Java:
public class Fibonacci{

   public static int fibonacci(int n){
       if(n ==1){
           return1;
       }else{
           return(fibonacci(n-1)+ fibonacci(n-2));
       }
       
   }

Aber bei meiner Aufgabe hat die Fibonacci-Methode den Typ integer-array, nämlich so.

Java:
public class Fibo{
    public static void main(String[] args){
           int[] array={1,1,0,0,0,0}
    
    }
    public static int[] fibonacci(int[] a, int n){
          int[] a = new int[array.length-n];   // Erzeugen eines Hilfsarrays 
          
          for(int i=n; i<array.length;i++){
          int fn= (array[i]-2)-(array[i]1);      //Fibonacci Formel, der Int-Variable fn wird der                                                                        //berechnete Wert zugewiesen

          a[i]= fib(array,2)+fib(array-1);    /*Hier komme ich leider nicht weiter wegen des                                                                       rekursiven Methodenaufrufs, aber vor allem wegen                                                                 der Rückgabe- Argumententypen der Methode                                                                          int[] fibonacci(int[]a, int n)
        }
        return a;
    }

Das heißt, die Länge des Arrays ist bekannt. Ich initialisiere die ersten 2 Arraywerte und möchte ihm sagen, bitte ab array[2] die Werte ausgeben und ins array speichern.
Mein Ansatz: eine for-Schleife zur Berechnung aller Werte bis array.length.

Ich bitte euch nur um Tipps, wie man in dieser Art die Fibonacci berechnen kann und bedanke mich herzlich.
 

prise1993

Mitglied
Ich würde eine Methode
Java:
 fiboRek(int n)
schreiben die dir die nte Fibonaccizahl zurück gibt!
Und mit Hilfe dieser Methode das Array befüllen!
Also das du es in der for-Schleife mit a = fiboRek(i); befüllst!
Muss das Array rekursiv befüllt werden?
 

Guenter123987

Bekanntes Mitglied
Ich weiß nicht, was rekursiv ist, habe aber schon eine Fibonaccimethode geschrieben.
Java:
public static int Fibonacci(int n) {
     int ergebnis = 0;
     for (int i = 0; i <= n; i++) {
       ergebnis += i;
     }
     return ergebnis;
   }
 
Danke Joose für den Link. Ich habe es anderweitig erledigt. Ich poste mal die Lösung, damit der Thread geschlossen werden kann.

Java:
    public static int[] fibonacci(int[] a, int n){
       
        for(int i=n; i<a.length;i++){                
           
        array[n]=(a[n-1])+(a[n-2]);        
            fibonacci(a,n+1);                             
           
        }
        return array;
    }
 

Guenter123987

Bekanntes Mitglied
So sind auch die Zwischenwerte drinnen, also die Fibonaccifolge bis zu n. Ist halt ein Integer - Array und kein int - Array, der zurückgegeben wird.
Java:
public static Integer[] Fibonacci(int n) {
   ArrayList<Integer> Fibonaccizahlen = new ArrayList<Integer>();
   int ergebnis = 0;
   for (int i = 0; i <= n; i++) {
     ergebnis += i;
     Fibonaccizahlen.add(ergebnis);
   }
   Integer[] fibonaccizahlen = (Integer[]) Fibonaccizahlen.toArray();
   return fibonaccizahlen;
}
 

Flown

Administrator
Mitarbeiter
@Guenter123987 Das ist keine Fibonaccifolge. Warum postest du sowas überhaupt?
Geschweige davon, dass die Zeile:
Java:
Integer[] fibonaccizahlen = (Integer[]) Fibonaccizahlen.toArray();
eine ClassCastException wirft.

Unterlasse doch einfach diese Posts, wenn du es nicht besser weißt.
 
Zuletzt bearbeitet:

Flown

Administrator
Mitarbeiter
@JavaAnfänger1990 Hier mal wies gemacht wird und lass dich bitte nicht verwirren:
Java:
import java.util.Arrays;

public class Test {
  public static void main(String... args) {
    System.out.println(Arrays.toString(fibonacci(10)));
  }
  
  public static int[] fibonacci(int n) {
    return fibonacci(new int[n], 0);
  }
  
  private static int[] fibonacci(int[] a, int i) {
    if (i >= a.length) {
      return a;
    }
    a[i] = i == 0 || i == 1 ? 1 : a[i - 2] + a[i - 1];
    return fibonacci(a, i + 1);
  }
}
 
Danke Flown. Ich werde mir auf jeden Fall deine Tutorials angucken. Mein Code ist im vorgegebenen Rahmen richtig (Die Aufgabenstellung ist der Link von Joose). Erst dann funktioniert es richtig, wenn man die vorgegebene main-Methode miteinbezieht.
Danke Leute
 
@JavaAnfänger1990
Java:
import java.util.Arrays;

public class Test {
  public static void main(String... args) {
    System.out.println(Arrays.toString(fibonacci(10)));
  }
 
  public static int[] fibonacci(int n) {                    //Methode zur Erzeugen eines Array
    return fibonacci(new int[n], 0);                       // Rückgabe der rekursiven Methode vom Rückgabetyp                                                                           //Integer
  }
 
  private static int[] fibonacci(int[] a, int i) {
    if (i >= a.length) {                                          // Überprüfen der Bediengung, 
                                                                          //ob Laufvariable i > Länge des Array
      return a;                                                       // Wenn Bedingung erfüllt ist, Rückgabe des Array a                                                                               //aber Warum, welche Werte hat denn das Array a
    }
    a[i] = i == 0 || i == 1 ? 1 : a[i - 2] + a[i - 1];  //wenn a[i]==0 oder 1 |Dann 1: Berechnung der Fib.-                                                                            //Zahl
    return fibonacci(a, i + 1);                                 // Rückgabe der rekurs. Methode, Stelle wird um 1                                                                                  //erhöht
  }
}
Ich habe Probleme beim Nachvollziehen der Vorgehensweise. Ich würde gerne deinen Code kommentieren und dich darum bitten, mir mitzuteilen, ob ich es richtig verstanden habe.
 

Flown

Administrator
Mitarbeiter
Naja du hast das ja schon richtig durchschaut... Aber was glaubst du denn was das Array a für einen Wert hat? Natürlich den, den du mitgegeben hast, oder was verstehst du dabei nicht?

EDIT: Wenn du mein Tutorial ansiehst, dann wirst du auch sehen, dass die erste if-Abfrage die wichtigste ist, denn sie ist die Rekursionsabbruchbedingung.
 

Guenter123987

Bekanntes Mitglied
Die Fibonaccifolge ist doch 1, 3, 6, 10, 15, 21 usw.
Dann müssten diese 2 Methoden ausreichen.
Java:
public static int fibonacciOfIndex(int index) {
   int fibonacci = 0;
   for(int i = 1; i <= index; i++) {
     fibonacci += i;
   }
   return fibonacci;
}

public static int[] fibonacciUpToIndex(int index) {
   int[] fibonacciArray = new int[index];
   for(int i = 1; i <= index; i++) {
     fibonacciArray[i-1] = fibonacciOfIndex(i);
   }
   return fibonacciArray;
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Abwandlung der Fibonacci Folge Java Basics - Anfänger-Themen 3
V Fibonacci Folge Java Basics - Anfänger-Themen 4
M Methoden Fibonacci-Folge Java Basics - Anfänger-Themen 6
M Fibonacci-Folge mit while-Schleife Java Basics - Anfänger-Themen 4
A Gerade Terme der Fibonacci-Folge aufsummieren Java Basics - Anfänger-Themen 12
S Fibonacci Folge Java Basics - Anfänger-Themen 34
I Fibonacci-Folge , direkter Weg. Java Basics - Anfänger-Themen 5
T Fibonacci mit einer Hilfsmethode berechnen Java Basics - Anfänger-Themen 10
123456789sssssaaaa Which is the best way to Print Fibonacci Series in Java? Java Basics - Anfänger-Themen 3
jhCDtGVjcZGcfzug Fibonacci Zahlen rekursiv und iterativ Java Basics - Anfänger-Themen 21
J Fibonacci-Reihe Java Basics - Anfänger-Themen 12
G Fibonacci Zahlenreihe Fehler Java Basics - Anfänger-Themen 4
D Fibonacci overflow integer Java Basics - Anfänger-Themen 8
B Fibonacci Zahlen dynamische Programmierung Java Basics - Anfänger-Themen 7
N Dynamisches Programmieren/Fibonacci Java Basics - Anfänger-Themen 1
S Fibonacci Zahlen rekursiv Java Basics - Anfänger-Themen 1
A Fibonacci Zahlen Java Basics - Anfänger-Themen 1
P Fibonacci -Verallgemeintert Java Basics - Anfänger-Themen 2
K Methoden Fibonacci in Array mit rekursiver Methoden Java Basics - Anfänger-Themen 19
M Fibonacci rekursiv mittels Cache Java Basics - Anfänger-Themen 17
T Stack Overflow - Rekursive Fibonacci Java Basics - Anfänger-Themen 10
K Fibonacci Zahlen Java Basics - Anfänger-Themen 3
B Fibonacci Zahlen rekursiv Array Java Basics - Anfänger-Themen 12
P fibonacci - do while Statement Logik Fehler Java Basics - Anfänger-Themen 5
A Fibonacci-numbers Java Basics - Anfänger-Themen 9
K Rekursion Fibonacci Java Basics - Anfänger-Themen 3
J Fibonacci Zahlen berechnen Java Basics - Anfänger-Themen 3
Z Fibonacci rekursiv meine Erklärung stimmt so? Java Basics - Anfänger-Themen 2
Z Fibonacci Array Erklärung Java Basics - Anfänger-Themen 5
M Fibonacci, Fakultaet, GGT Java Basics - Anfänger-Themen 9
C Fibonacci Zahlen Java Basics - Anfänger-Themen 7
J Ausgabe der fibonacci Zahlen Java Basics - Anfänger-Themen 4
D Fibonacci Java Basics - Anfänger-Themen 11
M Fibonacci-Linear und Rekursiv Java Basics - Anfänger-Themen 14
W Fibonacci Zahlenberechnung Java Basics - Anfänger-Themen 9
X Fibonacci mit durchschnittlicher Zeit Java Basics - Anfänger-Themen 5
G Fibonacci Algorithmus Java Basics - Anfänger-Themen 22
0 Fibonacci Zahlen seeeehr schnell berechnen Java Basics - Anfänger-Themen 9
S Fibonacci Rückrechnung! Java Basics - Anfänger-Themen 5
K Fibonacci Zahlen Java Basics - Anfänger-Themen 2
K Programmieren von den ersten 70 Fibonacci-Zahlen Java Basics - Anfänger-Themen 2
G fibonacci was stimmt an meinem code nicht? Java Basics - Anfänger-Themen 2
S Fibonacci Zahlenvergeich Java Basics - Anfänger-Themen 6
G Iterativer Algorithmus zur Berechnung der Fibonacci Zahlen Java Basics - Anfänger-Themen 1
P Fibonacci-Zahlen Java Basics - Anfänger-Themen 6
berserkerdq2 Wo geschieht der "Rücksprung, bei der rekursiven Folge Java Basics - Anfänger-Themen 5
sserio Längste Collatz-Folge Java Basics - Anfänger-Themen 11
D Grösste Zahl in einer Folge herausfinden. (ULAM) Java Basics - Anfänger-Themen 9
J Rekursive Folge (a=a-1) Java Basics - Anfänger-Themen 9
GAZ Tribonacci Folge Rekursiv Java Basics - Anfänger-Themen 11
D Hofstäter Q Folge Java Basics - Anfänger-Themen 3
S Negafibonacci Folge berechnen Java Basics - Anfänger-Themen 24
T Algortihmus: Kürzeste Folge zu einer Zahl Java Basics - Anfänger-Themen 40
G Harmonische Rekursive Folge Java Basics - Anfänger-Themen 3
J Byte Folge erkennen Java Basics - Anfänger-Themen 5
R Roboter - Helmich Folge 6 Java Basics - Anfänger-Themen 32
S rekursive folge verbessern Java Basics - Anfänger-Themen 2
H JOptionPane YES Option mit Folge? Java Basics - Anfänger-Themen 2
P Collatz-Folge mittels indirekter Rekursion Java Basics - Anfänger-Themen 8
X Problem mit Ducci-Folge Java Basics - Anfänger-Themen 7
B Element in Folge suchen Java Basics - Anfänger-Themen 7
L iterative und rekursive Folge Java Basics - Anfänger-Themen 20
N Folge verschiedener Nährwerte zur Kubikwurzel Java Basics - Anfänger-Themen 15
J Wurzel mit einer Folge brechnen Java Basics - Anfänger-Themen 5
E Rekursive definierten Folge Java Basics - Anfänger-Themen 10
D Bit-Folge bearbeiten Java Basics - Anfänger-Themen 2
H Passwort Brute Force rekursiv Java Basics - Anfänger-Themen 7
1 Array rekursiv durchlaufen Java Basics - Anfänger-Themen 8
E Rekursiv Objekte erzeugen - geht das? Java Basics - Anfänger-Themen 2
Cassy3 Binäre Bäume Rekursiv durchlaufen und bestimmte Elemente Zählen Java Basics - Anfänger-Themen 6
R0m1lly Kombinationen aus int array rekursiv Java Basics - Anfänger-Themen 2
L Rekursiv gegebenes Passwort herausfinden. Java Basics - Anfänger-Themen 2
P9cman Char Index rekursiv finden Java Basics - Anfänger-Themen 4
B Methoden Rekursiv festellen, ob eine Zahl gerade-oft vorkommt oder nicht Java Basics - Anfänger-Themen 4
S Methoden Methodenaufruf rekursiv zählen Java Basics - Anfänger-Themen 4
B Array nach Wert prüfen rekursiv Java Basics - Anfänger-Themen 5
sashady Zahlen rekursiv zerlegen und Ziffern addieren Java Basics - Anfänger-Themen 38
H Binominalkoeffizient tail-rekursiv in java darstellen Java Basics - Anfänger-Themen 0
G Primzahlen von Rekursiv nach Iterativ Java Basics - Anfänger-Themen 6
A Ackermmanfunktion rekursiv Java Basics - Anfänger-Themen 4
A Binärbaum rekursiv durchsuchen und Referenz zurückgeben Java Basics - Anfänger-Themen 4
H Rekursiv Methode ausführen bei Kindern Java Basics - Anfänger-Themen 12
G Methode Rekursiv umschreiben Java Basics - Anfänger-Themen 8
L Jede zweite Ziffer entfernen (rekursiv) Java Basics - Anfänger-Themen 6
J Dateien in Verzeichnissen rekursiv auflisten wirft Exception Java Basics - Anfänger-Themen 4
D Pentagonale Nummern in Rekursiv Java Basics - Anfänger-Themen 14
O Enum Array Rekursiv abarbeiten Java Basics - Anfänger-Themen 44
E Weg-Suche-Problem rekursiv Java Basics - Anfänger-Themen 12
O Primzahl rekursiv mit einem Wert ohne i, wie? Java Basics - Anfänger-Themen 6
E Erste Schritte Potenz Negativ (rekursiv) Java Basics - Anfänger-Themen 2
O Rekursiv aufrufen Java Basics - Anfänger-Themen 2
F In List Rekursiv suchen Java Basics - Anfänger-Themen 12
F Iterativ in Rekursiv Java Basics - Anfänger-Themen 2
L Rekursiv zwei Strings vergleichen Java Basics - Anfänger-Themen 3
B Fakultätsfunktion Rekursiv Berechnen aber mit Array Java Basics - Anfänger-Themen 10
B Wie kann ich Linien rekursiv zeichnen? Java Basics - Anfänger-Themen 4
kilopack15 Sin(x) rekursiv lösen Java Basics - Anfänger-Themen 17
T Rekursiv Tiefe eines binären Suchbaums ermitteln Java Basics - Anfänger-Themen 22
P Methoden Arrays.AsList kleinste Zahl ausgeben Rekursiv Java Basics - Anfänger-Themen 9
W A hoch N Rekursiv Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben