尾递归实现
Tail recursion implementation
在尾递归中,递归调用后就没有什么可做的了。但是该调用可以与条件逻辑混合吗?
喜欢,下面是尾递归的实现示例:
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)
}
}
}
在尾递归中,你可以做任何你想做的逻辑!不要紧。重要的是该方法的最后一行,或者换句话说,您的方法 return 所在的每个地方实际上都应该是递归调用,或者该方法应该 return 完全退出!
所以基本上,您将尾递归视为一个 while 循环!
查看此处了解更多信息:Understanding the Idea behind Tail Recursion in Scala
在尾递归中,递归调用后就没有什么可做的了。但是该调用可以与条件逻辑混合吗?
喜欢,下面是尾递归的实现示例:
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)
}
}
}
在尾递归中,你可以做任何你想做的逻辑!不要紧。重要的是该方法的最后一行,或者换句话说,您的方法 return 所在的每个地方实际上都应该是递归调用,或者该方法应该 return 完全退出!
所以基本上,您将尾递归视为一个 while 循环!
查看此处了解更多信息:Understanding the Idea behind Tail Recursion in Scala