作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想知道是否有更好的方法在 Scala 中编写递归循环。
def fib(n: Int) = {
def loop(a: BigInt = 0, b: BigInt = 1, n: Int = n): BigInt = {
if(n==0) a
else loop(b, a+b, n-1)
}
loop()
}
def fib(n: Int, a: BigInt = 0, b: BigInt = 1): BigInt = {
if(n==0) a
else fib(n-1, b, a+b)
}
最佳答案
请注意,您可以经常使用 foldLeft
或 foldRight
在这种情况下:
def fib(n: Int) = (1 to n).foldLeft((BigInt(0),BigInt(1)))((p,_)=>(p._2,p._1+p._2))._1
def fib = Iterator.iterate((0,1)){case (x,y) => (y,x+y)}.map(_._1)
fib.take(10).toList
关于scala - 如何在scala中进行递归循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8100132/
我是一名优秀的程序员,十分优秀!