请问循环能代替所有递归吗?

之所以会有这种想法,基于两个理由:
递归本质上是在进行压栈操作,人脑不易理解,尽管很多人都在尝试,相比之下,循环就容易理解多了。
这有一篇文章深入地介绍了递归,http://blog.csdn.net/theknotyouknow/article/details/24435291
循环执行效率比递归高很多。
在知乎上搜了一下,感觉回答的并不是很好,还请各位不吝赐教。
慕虎7371278
浏览 534回答 2
2回答

侃侃尔雅

能。大学计科有讲这个的。而且反过来也成立。你想啊,递归调用就是把参数压栈。改成循环,我手动建个栈,每次循环把需要的数据压进去,循环完弹出来不就可以了么。递归vs循环:人脑不易理解?你看看著名的斐波那契数列的递归定义,写成递归容易还是循环容易?哪个容易理解取决于你的问题的解是怎么表述的。如果你是解的提出者怎么办?习惯了哪个你肯定会自然而然地用哪个。循环在编程界一直是大多数,所以嘛,你明白了?普通递归总是要压栈的。递归的层数多了,栈就要爆了。怎么办呢,有一种叫尾递归的优化,也叫尾调用。就是每次到返回前的最后一步才进行递归调用,这样的情况就可以保持栈不随着递归过程一直增长。不仅高效,还直观。但是很多问题的尾递归解本身不直观。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript