提问人:Morniak 提问时间:6/18/2014 更新时间:6/18/2014 访问量:7311
Swift 中的嵌套递归函数
nested recursive function in swift
问:
我正在尝试执行嵌套递归函数,但是当我编译时,编译器崩溃(分段错误)。
这是我的代码:
func test()
{
func inner(val : Int)
{
println("\(val)")
if val > 0
{
inner(val - 1)
}
}
inner(3)
}
编译器日志在这里
答:
19赞
fqdn
6/18/2014
#1
有趣。。。似乎在尝试捕获对它的引用时,它可能在被保释?inner
下面为我们修复了它:
func test() {
var inner: (Int) -> () = { _ in } // give it a no-op definition
inner = { val in
println("\(val)")
if val > 0 {
inner(val - 1)
}
}
inner(3)
}
当然,如果没有嵌套,我们根本没有任何问题,例如,以下内容完全按预期工作:
func test(val: Int) {
println("\(val)")
if val > 0 {
test(val - 1)
}
}
test(3)
我会说:举报!
评论
0赞
Morniak
6/18/2014
该修复程序并不是真正的“性感”,但它可以完成等待官方修复的工作。谢谢!
0赞
E-Riddie
12/15/2014
声明数组时,不能在此解决方案中更改它们。如何正确声明它们?
评论
rec
test()