Ich lerne F #, und ich habe Probleme zu verstehen, warum das abstürzt. Es ist ein Versuch, Project Euler Problem 2 zu lösen.
%Vor%Die endgültige Version würde eine Summenfunktion aufrufen (und hätte eine höhere Grenze als 55), aber das ist Lerncode.
Dies ergibt eine StackOverflowException. Wenn ich jedoch in [1..30] kommentiere und Seq.initInfinite auskommentiere, bekomme ich:
%Vor%Es scheint, dass es Elemente auf Anfrage erzeugt, wie ich es in LINQ erwarten würde. Warum explodiert es, wenn es mit initInfinite verwendet wird?
Seq.initInfinite
gibt eine Sequenz zurück, die bei 0
beginnt.
Ihre fibonacci
-Funktion führt zu einem Stapelüberlauf, wenn sie mit Null aufgerufen wird, weil sie niemals die abschließenden Fälle trifft.
Sie können dies lösen, indem Sie von Seq.initInfinite (fun n -> n + 1)
Tags und Links f#