递归与迭代

递归和迭代是循环最常用的两种编程思想,初学者特别容易将两者搞混,特此小做整理。

递归(recursion)

又译为递回,在数学与计算机科学中,是指在函数的定义中使用函数自身的方法。递归一词还较常用于描述以自相似方法重复事物的过程。

递归分为两个阶段:
(1)递推:把复杂的问题的求解推到比原问题简单一些的问题的求解;
(2)回归:当获得最简单的情况后,逐步返回,依次得到复杂的解。
递归
使用递归要注意的有两点:
(1)递归就是在过程或函数里面调用自身;
(2)在使用递归时,必须有一个明确的递归结束条件。称为递归出口。

迭代(iteration)

迭代是重复反馈过程的活动,其目的通常是为了接近并到达所需的目标或结果。每一次对过程的重复被称为一次“迭代”,而每一次迭代得到的结果会被用来作为下一次迭代的初始值。
在计算机科学中,迭代是程序中对一组指令(或一定步骤)的重复。

迭代与普通循环的区别是:循环代码中参与运算的变量同时是保存结果的变量,当前保存的结果作为下一次循环计算的初始值。迭代使用计数器结束循环。

两者之间的区别

(1)实现方式:递归是重复调用函数自身实现循环;迭代是函数内某段代码实现循环。
(2)终止方式:递归循环中遇到满足终止条件的情况时逐层返回来结束;迭代则使用计数器结束循环。
(3)效率方面:在循环的次数较大的时候,迭代的效率明显高于递归。

两者之间的关系

(1)递归中一定有迭代,但是迭代中不一定有递归,大部分可以相互转换。
(2)能用迭代的不用递归,递归调用函数,计算有重复,浪费空间,并且递归太深容易造成堆栈的溢出.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值