【发布时间】:2011-09-18 11:42:36
【问题描述】:
假设我有一个函数,例如旧的最爱
def factorial(n:Int) = (BigInt(1) /: (1 to n)) (_*_)
现在我想找到n 的最大值,其中factorial(n) 适合Long。我可以的
(1 to 100) takeWhile (factorial(_) <= Long.MaxValue) last
这可行,但 100 是一个任意大的数字;在左侧我真正想要的是一个无限流,它会不断生成更高的数字,直到满足takeWhile 条件。
我想出了
val s = Stream.continually(1).zipWithIndex.map(p => p._1 + p._2)
但是有更好的方法吗?
(我也知道我可以递归地得到一个解决方案,但这不是我想要的。)
【问题讨论】: