为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

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

2 回答

?
侃侃尔雅

TA贡献1801条经验 获得超16个赞

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

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信