【发布时间】:2015-05-07 22:51:21
【问题描述】:
我试图了解如何将各种递归函数转换为尾递归。我已经查看了斐波那契和阶乘转换为尾递归的许多示例,并理解了这些示例,但我很难在结构有所不同的问题上实现飞跃。一个例子是:
def countSteps(n: Int): Int = {
if(n<0) return 0
if(n==0) return 1
countSteps(n-1) + countSteps(n-2) + countSteps(n-3)
}
如何将其转换为尾递归实现?
我查看过类似的问题,例如: Convert normal recursion to tail recursion 但同样这些似乎并没有转化为这个问题。
【问题讨论】:
-
这样的功能应该做什么?
-
您可能需要研究继续传递样式 (CPS)。
标签: algorithm scala recursion tail-recursion