Wert oder Konstruktor ist nicht definiert

8

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?

    
Steven Evers 10.03.2012, 01:19
quelle

3 Antworten

13

Da fib eine rekursive Funktion ist, muss sie mit let rec beginnen.

    
pad 10.03.2012, 01:26
quelle
7

Wenn Sie in F # eine rekursive Funktion schreiben möchten, müssen Sie das Schlüsselwort rec verwenden :

%Vor%

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 #.

    
svick 10.03.2012 01:28
quelle
3

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:

%Vor%

Nun repräsentiert fibs eine faule Sequenz von Fibonacci-Zahlen:

%Vor%

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.

    
Gene Belitski 10.03.2012 02:19
quelle

Tags und Links