具体的说就是,
是否所有的递归都能用循环改写?
反之,是否所有的循环都能用递归改写?
主要是突然想到,c++模板中,因为所有的变量都是常量,也就是没有所谓的循环,只能用递归,但它本身又是图灵完全的,这就意味所有循环做的任务都可以改用递归来完成。
那么反之是否也成立呢?
具体的说就是,
是否所有的递归都能用循环改写?
反之,是否所有的循环都能用递归改写?
主要是突然想到,c++模板中,因为所有的变量都是常量,也就是没有所谓的循环,只能用递归,但它本身又是图灵完全的,这就意味所有循环做的任务都可以改用递归来完成。
那么反之是否也成立呢?
理论上是可以,但是实际中却不是:一般来说递归在任何情况下都可以改写成循环,而且一般效率还会有一定的提升,但是耗费的资源可能会变多。反之,一般的循环不推荐写成递归,正如上面回答的,超过最大栈深度会有stack over folw ,而且时间会慢很多。最简单的例子是菲波那切数列,当递归到50附近时,时间已经无法估量了。。。。。。
1 回答3.4k 阅读✓ 已解决
1 回答2.8k 阅读
2.5k 阅读
1 回答535 阅读✓ 已解决
1 回答1.1k 阅读
1 回答493 阅读✓ 已解决
一张图解决你的疑惑
如果没解决继续追问