首页 > 编程知识 正文

迭代和递归优缺点,路由递归和迭代有什么区别

时间:2023-05-04 07:53:04 阅读:14755 作者:4298

迭代和递归的区别:

从“编程之美”的观点来看,“反复是人,递归是神! 可以借用”这样非常经典的语言。 从宏观上把握两者。

递归:重复调用函数自身实现循环称为递归; 递归不断深入调用函数,直到函数实际上有返回。 递归是通过堆栈机制实现的,每次深入层次时都会占用堆栈数据空间。 因此,递归涉及运行时的堆栈开销(参数必须按栈保存,并保存直到返回该层次的函数调用),因此可能会导致堆栈溢出错误。 但是递归编程体现出的思想是人们追求简洁,把问题交给计算机,把大问题分解成同一个小问题解决大问题的动机。

例如,if else调用自己,并在适当的时间退出

迭代:利用变量的原始值提出新值称为迭代,或者迭代是函数中的某个代码实现循环; 迭代往往需要人为分析问题,分析问题规律,将问题变为一次一次的迭代逼近回答。 迭代就像递归一样,对堆栈没有一定的要求,而且问题分析完成后,通过循环很容易实现。 的迭代很有效率,但很难理解。 在面临图表、二叉树、网格等数据结构的设计时,使用起来很困难,但递归可以省去人工思考解法的过程,只需在返回之前继续分解问题即可。

例如,for、while循环

http://www.Sina.com/http://www.Sina.com /

优缺点定义递归重复调用函数本身实现循环a。 用有限线性文实现无限集

b .代码容易阅读

c .大问题变成了小问题,代码量减少了。

a .递归地继续调用函数,浪费空间

b .容易导致堆栈溢出

反复利用变量的原始值得出新值;

函数中的某个代码实现循环。

a .效率高,工作时间随周期的增加而增加

b .没有额外费用。

a .代码很难理解

b .不像递归代码那么简洁的代码

c .编写复杂问题时,代码逻辑很难考虑

两者的关系a .递归一定有迭代,但迭代不一定有递归,大部分可以相互转换。

b .相对而言,迭代不使用递归(由于递归继续调用函数,因此浪费了空间,容易引起堆栈溢出) )。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。