【问题标题】:Is This A Good Example Of Recursion?这是递归的一个很好的例子吗?
【发布时间】:2015-10-30 07:30:59
【问题描述】:

我意识到这是一段非常简单的代码,我很确定它是递归的,但我只是想确保它是我认为的那样。 (对不起,如果这是一个蹩脚的问题,我只是在猜测自己是否了解递归实际上是什么。)

var x = 0
func countToTen() {
    if (x <= 10) {
        println(x)
        x++
        countToTen()
    }
}

【问题讨论】:

标签: recursion


【解决方案1】:

是的,这绝对是递归的!然而,为了获得良好的风格,最好将 x 作为函数的参数。这是一种风格问题,但它也使代码更容易维护,没有像这里那样的全局变量。

这就是我要说的。

func countToTen(x) {
    if (x <= 10) {
        println(x)
        countToTen(x + 1)
    }
}

现在你可以调用函数了

countToTen(1)

例如,这将从 1 数到 10。你做得对,我的版本可能稍微干净一些。

【讨论】:

    【解决方案2】:

    在编程中,如果一个方法:

    • 调用自身,
    • 转向基本情况(在本例中 x == 10)

    那么它是递归的。

    Here 是一篇关于真实世界示例的帖子。

    【讨论】:

    • 那里的while循环会不会只是调用该方法的另一个实例?留下9个方法不断调用新方法?
    • fiddle 中检查了它,结果是 if and while 实际上在这种情况下给出了相同的输出,这很有趣,因为我认为这在大多数其他语言中不会发生。
    • 好吧,我原以为 while 循环只会调用另一个 CountToTen 实例 10 次,依此类推,它会调用 CountToTen 100000000 次?大声笑
    • 谁知道¯_(ツ)_/¯ 反正我删了。
    猜你喜欢
    • 2016-04-25
    • 2012-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-06
    相关资源
    最近更新 更多