【发布时间】:2015-06-22 00:06:59
【问题描述】:
我正在学习有关 Scala 函数式编程的 Coursera 课程,以便学习该语言。
他们引入了尾递归函数的概念,并将它们基本上定义为以调用自身结束的函数。但随后他们将此作为工作示例:
def sum(f: Int => Int)(a: Int, b: Int): Int = {
def loop(a: Int, acc: Int): Int = {
if (a > b) acc
else loop(a + 1, f(a) + acc)
}
loop(a, 0)
}
如果我用 @tailrec 注释 sum,我会收到错误,因为 IDE (IntelliJ) 不认为它是尾递归的。
sum 在这里被称为尾递归,还是内部实现“循环”在这种情况下被认为是尾递归?
【问题讨论】:
标签: scala syntax tail-recursion higher-order-functions