无法快速使用递归

Posted

技术标签:

【中文标题】无法快速使用递归【英文标题】:Not able to use recursion in swift 【发布时间】:2014-07-29 12:21:56 【问题描述】:

我正在使用这个功能

    func countFrom(from:Int, #to:Int) -> () 
        println("\(from)")
        if from < to 
             countFrom(from + 1, to: to)
        
    
    countFrom(1, to: 10)

但在编译时我得到 Swift 编译器错误 -

命令 /Applications/Xcode6-Beta2.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift 失败,退出代码为 1

如果我删除了“countFrom(from + 1, to: to)”,那么就不会再有错误了。这有什么问题?

【问题讨论】:

应该是self.countFrom...? 这是 Xcode 6 beta 4 中的一个已知问题——递归的嵌套函数会使编译器崩溃。他们在发行说明中提到它,并说解决方法是“将递归函数移动到外部类型或模块上下文”。 "Command /Applications/Xcode6-Beta2.app/Contents/..." 好吧,对于初学者,我会在问太多问题之前升级到最新的测试版关于奇怪的行为。 【参考方案1】:

回答:代码没问题,编译器过时了。根据@Matt 的评论,这在 Beta 4 中运行良好。

控制台输出:

1
2
3
4
5
6
7
8
9
10

【讨论】:

以上是关于无法快速使用递归的主要内容,如果未能解决你的问题,请参考以下文章

合并排序、快速排序和树遍历中的递归

了解快速排序期间的递归

java 使用尾递归快速排序

使用递归实现一个数组的快速排序

数据结构快速排序非递归实现

快速排序基本思想,递归写法,python和java编写快速排序