特别是如果我有以下代码: func sum(n: Int, acc: Int) -> Int { if n == 0 { return acc } else { return sum(n – 1, acc + n) } } 请问Swift编译器优化它到一个循环? 在下面更有趣的情况下呢? func isOdd(n: Int) -> Bool { if n == 0 { return false; } else { return isEven(n – 1) } } func isEven(n: Int) […]
我认为有@tailrec注释,以确保编译器将优化尾recursion函数。 你只是把它放在宣言前面? 如果在脚本模式下使用Scala(例如在REPL下使用:load <file> ),它也可以工作吗?