7

私は Scala の初心者で、FP スキルをProject Eulerで練習しています。

問題 5: 1 から 20 までのすべての数字で割り切れる最小の正の数は何か」に取り組んでいる間、Range ベースと Stream ベースのソリューションを比較していました。

val r1 = Range(20, Int.MaxValue).find(i => (2 to 20).forall(i % _ == 0)).get
val r2 = Stream.from(20).find(i => (2 to 20).forall(i % _ == 0)).get

奇妙なことに、r1 の計算は約 20 秒で終了しますが、r2 のストリームベースの計算ではメモリが不足しています。私は反対のことを期待していたでしょう - 誰か説明してもらえますか?

4

1 に答える 1