相关疑难解决方法(0)

Swift实现尾调用优化吗?在相互递归的情况下?

特别是如果我有以下代码:

func sum(n: Int, acc: Int) -> Int {
  if n == 0 { return acc }
  else { return sum(n - 1, acc + n) }
}
Run Code Online (Sandbox Code Playgroud)

Swift编译器会将它优化为循环吗?在下面一个更有趣的案例中是这样的吗?

func isOdd(n: Int) -> Bool {
  if n == 0 { return false; }
  else { return isEven(n - 1) }
}

func isEven(n: Int) -> Bool {
  if n == 0 { return true }
  else { return isOdd(n - 1) }
}
Run Code Online (Sandbox Code Playgroud)

tail-call-optimization swift

63
推荐指数
2
解决办法
7971
查看次数

标签 统计

swift ×1

tail-call-optimization ×1