尾递归实现

时间:2018-02-04 07:56:38

标签: scala tail-recursion

在尾递归中,在进行递归调用之后不需要做任何事情。但这种调用可以与条件逻辑混合使用吗?

喜欢,是跟随实现尾递归的一个例子:

def fibonacci(n:Int):Int = {
  def go(count:Int, n1: Int, n2:Int): Int = {
    if(count == n){
      n1+n2
    }else{
      val x = n2
      val y = n1+n2
      go(count+1,x,y)
    }
  }
  if(n == 1){
    0
  }else{
    if(n == 2){
      return 1
    }else{
      go(3,0,1)
    }
  }
}

1 个答案:

答案 0 :(得分:2)

在尾递归中,你可以做任何你想要的逻辑!不要紧。重要的是该方法的最后一行或换句话说,您的方法返回的每个地方实际上应该是递归调用或方法应该完全返回!

所以基本上,你把你的尾递归视为一个while循环!

请点击此处了解详情:Understanding the Idea behind Tail Recursion in Scala