递归还是循环?
文章标签
递归
什么时候应该使用递归函数而不是循环语句?同样,什么时候应该使用 循环语句 而不是 递归?
我常常发现自己有点不确定如何回答这个问题,并且我发现自己回想起过去的一个玩具问题。问题是这样的:
编写一组代码来评估提供的 String 变量是否是回文。您的代码应该确定反映此条件的布尔值。考虑到一些约束和边缘条件,我花了一段时间来解决代码。然而,最终我能够通过使用递归函数解决这个问题。
过了一会儿我想知道,这可以通过 For 循环实现吗?于是,我开始寻找答案并开始尝试。我发现,果然,这也可以通过 Loop 语句来完成。
当我反思这两组代码时,我发现自己有些沮丧,因为感觉我仍然没有理解为什么你更喜欢递归语句而不是循环。我在 StackExchange 上看到了一个讨论,它对这个主题有了一些启发。一位名叫 Scant Roger 的开发者说道:
“最终,没有什么递归可以计算而循环不能,但循环需要更多的管道。因此,递归可以做而循环不能做的一件事是使一些任务变得超级简单......通常是递归解决方案有问题更漂亮。”
我发现罗杰是绝对正确的;我发现编写递归解决方案比使用 Loop 语句开发相同的解决方案要容易得多。如果创建递归解决方案更容易,并且稍后将其重新设计为循环(以降低代码复杂性),我认为那很好。
你有什么想法?我对编码还是新手,我很想听听其他人的意见!