我尝试在Swift中实现以下简单的函数:
func sum (n: Int, currentSum: Int = 0) -> Int {
return n == 0 ? currentSum :
sum(n: n-1,
currentSum: currentSum + n)
}
我原本期望编译器会使用尾递归优化。但我遇到了(字面上的)栈溢出问题。
我需要设置什么标志(flag)来让编译器进行这种优化呢?是我的代码有误或是该编译器优化不可用吗?
谢谢!