本文主要是介绍递归和循坏的区别,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
使用场景
需要重复的多次计算相同的子问题,通常可以使用递归或者循环。递归是在一个函数内部调用自身(终止条件),循环是通过设置计算的初始值以及终止条件。
优劣对比
递归优点:代码整洁,简单易懂。譬如树的前序遍历、中序遍历、后序遍历等用递归实现起来很简单,但是用循环实现相对较复杂。
递归缺点:
1. 时间效率低。函数调用时,需要在线程栈中分配空间保存参数、临时变量、返回地址等,而往栈中添加数据和从栈中弹出数据都需要时间。
2. 易造成栈溢出。线程栈的大小是有限的(默认是1M),如果递归调用层次深,容易栈溢出。
3. 有可能很多计算是重复的,从而性能下降。譬如计算斐波那契数列,F(4)会被重复计算。
循环并无上述缺点。使用递归还是循环,需要根据不同场景来确定。
这篇关于递归和循坏的区别的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!