# Java Fibonacci Folge Problem



## Dash199t (18. Mai 2015)

Hi Leute!

Ich als totaler Java-Noob soll nun eine for-Schleife schreiben, welche die Fibonacci-Folge ausgiebt. Ich habe bereits einen Code angefertigt, nur gibt dieser nicht die richtigen Zahlen aus.


```
public class Fibonacci{
	public static void main(String[] args) {
		int a = 1, b = 1, c = 1;
		for (int i = 1; i < 20; i++) {
			a = b;
			b = c;
			c = a + b;
			System.out.println("Der Fibonacci-Wert " + i + " ergibt " + c);
		}
	}
}
```

Dieser gibt nun das Hier aus:

Der Fibonacci-Wert 1 ergibt 2
Der Fibonacci-Wert 2 ergibt 3
Der Fibonacci-Wert 3 ergibt 5
Der Fibonacci-Wert 4 ergibt 8
Der Fibonacci-Wert 5 ergibt 13
...
...

Eigentlich muss er aber diesen hier ausgeben:

Der Fibonacci-Wert 1 ergibt 1
Der Fibonacci-Wert 2 ergibt 1
Der Fibonacci-Wert 3 ergibt 2
Der Fibonacci-Wert 4 ergibt 3
Der Fibonacci-Wert 5 ergibt 55
...
...

Wo liegt mein Fehler? 

Vielen Dank im Voraus,

Dash.


----------



## rabe08 (18. Mai 2015)

Die Folge, die Dein Programm ausgibt ist eigentlich richtig, bis auf ein paar kleine Punkte, die Du berücksichtigen musst. 

Vorab: man kann die Fibonacci Folge mit 1, 1 oder 0, 1 starten. Ist egal. Der Mathematiker ist da ganz Oportunist und macht es so, wie es ihm gerade am besten in den Kram passt. 

Wenn Du die Startwerte 1, 1 setzt, ist F1 = 1 und F2 = 1. Du startest die Berechnung dann natürlich erst mit F1 + F2 = F3. Dann kommt raus:

F1 = 1
F2 = 1
F3 = 2
F4 = 3
F5 = 5
F6 = 8
F7 = 13
F8 = 21
F9 = 34
F10 = 55
usw.

Wie kommst Du auf die Idee, dass F5 = 55 sein soll?

Mein Problem ist jetzt, dass die Lösung Deines Problems extrem einfach ist. Es geht um die Startwerte, schau Dir die mal genau an. Wenn ich Dir die richtigen jetzt einfach hier hin schreibe bin ich mir nicht sicher, ob Du was daraus lernst.


----------



## crazyracer98 (18. Mai 2015)

Hier die korrigierte Version deines Programms 


```
public class Fibonacci {

	public static void main(String[] args) {
		int a = 0, b = 1, c = 0;
		
		System.out.println(a);
		System.out.println(b);
		
		for (int i = 1; i < 20; i++) {
			c = a + b;
			System.out.println(c);
			a = b;
			b = c;
		}
	}

}
```

Hierbei ist es auch egal, ob a=0, b=1 oder a=1, b=1 ist 

Mit freundlichen Grüßen
crazy


----------



## Mystique1680 (18. Mai 2015)

hi, ich hab das auch mal durch gemacht.
Beispiel: Fibonaccizahlen

 public class Fibo{

    public static void main(String[] args){

int a = 1;
int b = 1;
int c = 1;
int n = Integer.parseInt(args[0]);
int i = 1;

        while (i < n){
b = a;
a = c;
c = a + b;
i++;
        }

System.out.println(c);
    }
}  

oder:

public class FiboMain{

    public static int fibo(int i){

        if(i == 0) return 0;
        if(i == 1) return 1;

        return fibo(i - 1) + fibo(i - 2);
    }

    public static void main(String[] args){

        System.out.println(fibo(Integer.parseInt(args[0])));
    }
}

oder

*public static        long *fib(*int *a){
*if *(a==1||a==2)       *return *1;
*else return *fib(a-1)+fib(a-2);
      }Wir testen die Methode in        einem kleinen Demo-Programm:
*import *info1.*;
*public class *FibonacciDemo1{
*public static void *main(String[] args){
    System.out.print("Geben Sie ein Zahl an: ");
*int *a = Console.in.readInt();
    System.out.println("fib("+a+") = " + fibonacci(a));
  }
*private static int *fibonacci(*int *a){
*if *(a==1||a==2) *return *1;
*else return *fibonacci(a-1)+fibonacci(a-2);
  }
}

oder:
R. Schiedermeier - Programmieren mit Java II

hoffe da sind ein paar denkanstöße dabei

MfG
M.


----------



## Dash199t (19. Mai 2015)

Oh man, jetzt sehe ich es selber..  
War wahrscheinlich etwas zu spät gestern ^^ Vielen Dank euch dreien, mal sehen was mein Prof dazu sagt 

Vielen Dank,

Dash.


----------

