我是一名 Scala 初学者,正在使用Project Euler练习我的 FP 技能。
在研究“问题 5:可以被 1 到 20 的所有数字整除的最小正数是多少”时,我比较了基于范围和基于流的解决方案:
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 的基于流的计算内存不足。我会预料到相反的情况——有人能解释一下吗?