Fibonacci

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Punkster, 25. August 2006 .

Schlagworte:
  1. 25. August 2006
    hi @ all ...

    ich hoffe mir kann hier jemand helfen ...
    ich komm grad mal net weiter :-D

    und zwar lautet meine aufgabe:
    Fibonacci
    Sie wird als rekursive Folge definiert, bei der ab der dritten Stelle jedes Glied gleich der Summe der zwei vorangegangenen Zahlen ist.

    Sei a0 = 1, a1 = 1 und an, = an-1 = + an-2 für n > 2. Dadurch ist die rekursive Folge Fibonacci definiert ...

    das bedeutet ja:
    fib(0) = 0
    fib(1) = 1
    fib(2) = 1
    fib(3) = 2
    fib(4) = 3
    fib(5) = 5
    fib(6) = 8

    so ... nun muss ich eine rekursive schleife in c# proggen, die eben genau diese abfolge hat und nach einer zahl X (durch eingabe definiert - console.readline() endet ...

    ich finde da aber keinen einstieg ^^
    ist ne arbeitsaufgabe ... aber die ist meines erachtens schon echt schwer ...

    wenn mir jemand helfen könnte, wär das echt mal supie nett ...
    10er versteht sich von selbst :-D

    liebe grüße
     
  2. 25. August 2006
    also ich kenn mich in c net so aus, aber ich hoffe ich kann dir den anstoss dazu geben,
    da ich java programmiere sollte der syntax etwa gleich sein. also ich würde es
    folgendermassen machen:

    Code:
    // variablen definieren:
    int a = 0,b = 1
    // konsole auslesen (gibt in java ein string(text), nehme an in c auch):
    String s = console.readline();
    // s in eine zahl konvertieren, vorsicht vor fehlern wenn der benutzer z.B. ein buchstabe eintippt
    try {
    int x = Integer.parseInt(s);
    //sehr java spezifisch diese umwandlung, musst halt suchen für c
    }catch (Exception e){
    console.printLine("Fehlerhafte eingabe");
    }
    // zuerst mal die beiden werte schreiben die bekannt sind, eventuell musst du die zuerst in String konvertieren
    console.printLine(a);
    console.printLine(b);
    // definition von einer variable zum zwischenspeichern
    int y = 0;
    // kreation einer ArrayList(dynamische Tabelle in JAVA, weiss net obs die in C auch hat) und erste beiden zahlen einfüllen
    ArrayList ar = new ArrayList();
    ar.add(a);
    ar.add(b);
    // jetzt die schlaufe, die dann die fibonnacifolge ausgibt:
    for (int i = 1; i<x;i++){
    y = ar.get(i)+ar.get(i-1);
    ar.add(y);
    console.printLine(y)
    //eventuell wieder konvertieren
    }
    so, ich hoffe ich hab dir nen anstoss gegeben, ich hoffe du schaffst den rest.
    mfg swissmaster
     
  3. 25. August 2006
    hatte auch mal so eine Aufgabe allerdings in c++, ich hab dir den quelltext hochgeladen

    Download offline!/

    PW jürgen
     
  4. 25. August 2006
    Bin grad etwas müde also wenns falsch ist, ignorieren ^^

    Code:
    long fibo(long n) {
     if(n)
     return (n <= 2) ? n : fibo(n-2) + fibo(n-1);
    }
    Das ganze schaut so aus:

    Code:
    int main(void) {
     long f, i=0;
     printf("\tWie viele Fibonacci-Zahlen wollen Sie ausgeben:");
     scanf("%ld",&f);
     printf("\n");
     while (i++ < f)
     printf("\tF(%ld)=%ld\n",i,fibo(i)); 
     printf("\n");
     return 0;
     }

    In C geschrieben, sollte sich ja irgendwie ähneln vom Code her ^^
     
  5. 31. August 2006
    Das ist leider keine rekursive Methode...rekursiv bedeuted das du dich immer wieder selbst aufrufst bis ein spezielles Endstadium erreicht wurde...hier z.b. 0
     
  6. 1. September 2006
    Code:
    #include <iostream>
    
    using namespace std;
    
    int Fibonacci(int n);
    
    int main(void)
    {
     int a;
     int BisZahl = 0;
     cout << "Bitte eingeben bis zu welcher Zahl die Fibanoccireihe(oder wie man das schreibt ^^) ausgegeben werden soll: ";
     cin >> BisZahl;
     for(int i = 0; i <= BisZahl; i++)
     {
     cout << "Fibonacci(" << i << ") = " << Fibonacci(i) << "\n";
     }
     
     cin >> a;
     
     return 0;
    }
    
    int Fibonacci(int n)
    {
     // cout << "."; //zum Anzeigen, wie oft Fibonacci ausgeführt wurde
     if(n < 3) return 1;
     else return Fibonacci(n-1) + Fibonacci(n-2);
    }
    
    das ist dann allerdings c++

    mfg thecoolman4rr

    PS: ich würde empfehlen keine Zahlen größer 40 einzugeben =)) das gehts zwar alles noch aber so aber 47 dauerts für jede Zahl doch immer schon nen weilchen...
     
  7. 1. September 2006
    Für eine Fibonacci Folge brauchst du doch nur 3 Variablen
    var1 = n
    var2 = m
    Ergebnis = var1+var2

    Dann fängst mit 1 an also m = 1 und n = 0 lässt das ergebnis angeben
    Dann var1 = m
    var2 = Ergebnis
    Ergebnis = var1+var2
    dann kann man das als schleife durchlaufen lassen oder irre ich mich?
     
  8. 1. September 2006
    guckst du threadanfang ^^
    mfg thecoolman4rr
     
  9. 2. September 2006
    Yeah
    Kann man doch mit nem counter oder so machen dass er wenn eine Variable i oder ähnlich den Wert erreicht oder wenn die Zahl größer als irgendwas wird ?
     
  10. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.