ist das Rekursion?
-
@Don_Pazo
Bullshit!Direkte Rekursion (am meisten Verbreitet) ist ein Selbstaufruf
Indirekte Rekursion ist ein Aufruf durch eine andere, welche wieder die eine aufruft die diese dann wieder aufruft.Funktionen mit Rückgabewert nennt man "Funktionen"
Funktionen ohne Rückgabewert nennt man "Prozeduren"
-
'#' schrieb:
Funktionen mit Rückgabewert nennt man "Funktionen"
Funktionen ohne Rückgabewert nennt man "Prozeduren"In Pascal
-
hansmeier99 schrieb:
Kannst du mir sagen, warum meine Funktion nicht rekursiv sein soll?
Die ist schon rekursiv, aber vielleicht war in der Aufgabenstellung etwas anderes gefragt. Poste doch mal die Aufgabenstellung.
-
Eigentlich ist die Funktion rekursiv, aber wenn schon in Arrays gespeichert wird sollte man auch dafür sorgen dass nicht bei jedem Aufruf die komplette Folge neu berechnet werden muss

Ausserdem nehme ich an dass Vorgabe war, dass die Funktion das n-te Folgenglied zurückgeben und nicht in einem globalen Array speichern sollte.
-
Nein, Aufgabe war, dass die Zahlen bis zum n-ten Folgenglied ausgegeben werden sollte.
Z.b. Ausgabe der ersten 5 Zahlen:
0 1 1 2 3aber wenn schon in Arrays gespeichert wird sollte man auch dafür sorgen dass nicht bei jedem Aufruf die komplette Folge neu berechnet werden muss
Meinst du damit, dass man mal errechnete Ergebnisse nutzen sollte? Damit hast du auf jeden Fall recht, aber mir ist keine bessere Lösung für das Problem, dass die Ausgabe erst im Hauptprogramm erfolgen soll, eingefallen (außer nur lokale Arrays zu benutzen)...
@ all: Also meint ihr, dass ich dafür die Punkte bekommen müsste, es sich also um eine rekursive Funktion handelt?
-
Zumindest Teilpunkte würde ich sagen.
-
Ich will nicht nerven, aber ich versteh immer noch nicht, warum ich nicht die vollen Punkte bekommen sollte...
Wie würdet ihr das denn lösen?
-
hansmeier99 schrieb:
@ all: Also meint ihr, dass ich dafür die Punkte bekommen müsste, es sich also um eine rekursive Funktion handelt?
Es handelt sich um eine rekursive Funktion und dank der Verwendung des Felds für die Fibonacci-Werte statt einer Rückgabe ist sie auch effizienter als die "naheliegende" Definition -- andernfalls müsste man ein pair<int, int> zurückgeben, um nicht Werte doppelt zu berechnen, so wie das in Wallis Beispiel geschieht:
pair<int, int> fib(int n) { if (n == 0) return make_pair(0, 1); pair<int, int> next = fib(n - 1); return make_pair(next.second, next.first + next.second); }=> Dein Code sollte volle Punktzahl geben.
-
hansmeier99 schrieb:
Ich will nicht nerven, aber ich versteh immer noch nicht, warum ich nicht die vollen Punkte bekommen sollte...
Hast du mal denjenigen gefragt, der die Sache korrigiert hat? Ich könnte mir, wie gesagt, höchstens vorstellen, dass du dich irgendwo nicht an die Aufgabenstellung gehalten hast. Oder der Korrektor hat sich vertan, soll vorkommen.
-
@hansmeier99
Du solltest dich mal schlau machen, wie eine geforderte Lösung aussieht. Dann kannst du ja mit deiner vergleichen. Ansonsten, ohne exakten Wortlaut der Aufgabenstellung können wir nur spekulieren.