2
私のコード(以下)は、スタックオーバーフローの例外を伴います。 ImはF#がhaskellのようなものではないと仮定しています。 F#のような再帰的リストを扱う正しい方法は何ですか?私はintそれを渡す必要がありますので、それは決まったサイズを持っていますか?F#再帰的リストを使用する
let rec collatz num =
match num with
|x when x % 2 = 0 ->num :: collatz (x/2)
|x -> num :: collatz ((x * 3) + 1)
let smallList = collatz(4) |> Seq.take(4)
- 問題は、リストが_recursive_であるという事実ではありません - それは、F#で完全に罰金です。問題は、リストが_infinite_であり、F#リストがデフォルトでは怠惰ではないということです。 –