【发布时间】:2019-02-18 17:36:24
【问题描述】:
我正在复习 Scala 考试,并试图找出我错过的这个测验问题。我将尾递归理解为“最后一次调用本身”,但我对其中一些代码 sn-ps 之间的区别感到困惑。 为什么这被认为是尾递归,
def f(x: Int): Int = {
if (x % 2 == 0) {1}
else {f(x + 1)}
但这不是吗?
def f(x: Int): Int = {
if (x % 2 == 0) {1}
else {1 + f(x + 1)}
在函数中加 1 究竟是什么限制了它的尾递归?很抱歉,如果这是一个愚蠢的问题,我看不出这个数字有什么影响,并想巩固我的理解。任何其他完全能够识别尾递归的指针也很棒!
【问题讨论】:
标签: scala tail-recursion