此Scala递归代码有什么问题?

时间:2018-06-28 14:53:29

标签: scala recursion fibonacci

我最近开始学习Scala并尝试在其中实现递归功能。我本次练习的目标是返回斐波那契数列的第n个数字。

def fib(n: Int ): Int = {

  def go(n:Int, prev:Int, curr: Int, res:Int): Int =
    if (n == 0 ) res
    else go(n-1, curr, prev+curr, prev+curr)

    go (n, 0, 1, 0 )
}

def main(args: Array[String]): Int =
  println(fib(7))

没有编译错误,但是结果以括号括起来。

结果->()

任何建议。

1 个答案:

答案 0 :(得分:1)

最后,我明白了。

这是我的工作方式。

def fib(n: Int ) : Int = {    
 def go(n: Int, prev: Int, curr: Int, res: Int): Int =     

 if (n == 0 ) res     
 else go(n-1, curr, prev+curr, prev+curr)     

 go (n-2, 0, 1, 0 )
}
def main(args: Array[String]): Unit = 
   println(fib(10))