#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 + Multi-Zitat Zitieren
#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 + Multi-Zitat Zitieren
#3 25. August 2006 hatte auch mal so eine Aufgabe allerdings in c++, ich hab dir den quelltext hochgeladen Download offline!/ PW jürgen + Multi-Zitat Zitieren
#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 ^^ + Multi-Zitat Zitieren
#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 + Multi-Zitat Zitieren
#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... + Multi-Zitat Zitieren
#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? + Multi-Zitat Zitieren
#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 ? + Multi-Zitat Zitieren