Ich dachte, ich könnte hinzufügen, dass Sie Ihren Fibonacci-Rezidiv falsch definieren. Werfen Sie einen Blick hier auf den Code:
let rec fib n =
match n with
| 1 -> 1
| 2 -> 2
| _ -> fib(n-1) + fib(n-2);;
Jetzt können Karte diese Funktion über eine Liste:
[0 .. 8] |> List.map fib
Prozess wird wegen Stackoverflow beendet.
Sitzungsabbruch erkannt.
Drücken Sie die Eingabetaste, um neu zu starten.
Whoops.
Auch wenn ich meine Liste Verständnis anpassen nicht Null sind:
[1 .. 8] |> List.map fib
val es: int list = [1; 2; 3; 5; 8; 13; 21; 34]
Wir tun etwas in der Nähe der Fibonacci-Sequenz erhalten, aber nicht die genaue Sequenz ... Sie werden vielleicht nicht denken, das ist wichtig für das Lernen, warum Ihr Intellisense Fehler ist aufgetreten ...
Aber schauen Sie genau auf diese man jetzt ... auch feststellen, dass ich verwende 'n' anstelle von '_':
let rec fib n =
match n with
| 0 -> 0
| 1 -> 1
| n -> fib(n-1) + fib(n-2);;
val fib: int -> int
[0 .. 8] |> List.map fib;;
val es: int list = [0; 1; 1; 2; 3; 5; 8; 13; 21]
Jetzt ist das die richtige Reihenfolge.
Oh ok, aus irgendeinem Grund dachte ich Einheit sagte Uint. – Unknown