swift中的嵌套递归函数

时间:2014-06-17 18:16:27

标签: ios recursion functional-programming swift

我正在尝试执行嵌套递归函数,但是当我编译时,编译器崩溃(分段错误)。

这是我的代码:

func test()
{
    func inner(val : Int)
    {
        println("\(val)")
        if val > 0
        {
           inner(val - 1)
        }
    }
    inner(3)
}

编译器记录are here

1 个答案:

答案 0 :(得分:18)

有趣的是......似乎在尝试在定义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)

当然没有嵌套我们根本没有任何问题,例如以下工作完全符合预期:

{{1}}

我说:报告吧!