Ich lerne f # und ich habe ein ziemlich triviales Problem, das scheint keinen Sinn zu ergeben. Ich arbeite an Project Euler Problem 2 und ich habe das:
%Vor%Ich habe den Fehler beim rekursiven fib-Aufruf:
Wert oder Konstruktor 'fib' ist nicht definiert
Und ich bin mir nicht sicher warum. Irgendwelche Hilfe?
Wenn Sie in F # eine rekursive Funktion schreiben möchten, müssen Sie das Schlüsselwort rec
verwenden :
Das liegt daran, dass Sie in F # unter normalen Umständen nur Bezeichner verwenden können, die vor dem aktuellen Code deklariert sind, anders als in C #.
Wenn Sie von Projekt Euler Problem 2 sprechen, können Sie statt Rekursion mit Seq.unfold
gehen, was sehr idiomatisch ist und gibt Sie alle Fibonacci-Zahlen auf einmal:
Nun repräsentiert fibs
eine faule Sequenz von Fibonacci-Zahlen:
Und um es von BigInteger
zu machen, ersetzen Sie einfach (1,2)
by (1I,2I)
, obwohl die Lösung Ihnen erlaubt, innerhalb ganzer Ganzzahlen zu bleiben.