递归 尾递归 迭代 递推 的比较--算法课第一次作业

本文对比了递归、迭代及递推三种算法的特点,并详细解释了它们各自的优缺点。递归能够简化代码,但可能引起堆栈溢出;迭代则在空间上几乎没有额外开销,但在解决复杂问题时编写较为困难;递推算法则避免了数据进出栈的过程,从边界值出发直接求解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

算法课第一次作业:递归 尾递归 迭代 递推 的比较

 

定义

优点

缺点

demo

递归

程序调用自身的编程技巧称为递归

1)大问题化为小问题,可以极大的减少代码量;

2)用有限的语句来定义对象的无限集合.;

3)代码更简洁清晰,可读性更好

1)递归调用函数,浪费空间;

2)递归太深容易造成堆栈的溢出

上面的汉诺塔

】】】

】】】】】】

...

】】】】】】】】】

】】】】】】】】】】】

】】】】】】】】】

...

】】】】】】

】】】

迭代

利用变量的原值推算出变量的一个新值,迭代就是A不停的调用B.

1)迭代效率高,运行时间只因循环次数增加而增加;

2)没什么额外开销,空间上也没有什么增加,

1) 不容易理解;

2) 代码不如递归简洁;

3) 编写复杂问题时困难。

】】】

】】】

】】】

】】】

...

】】】

递推

递推算法是一种简单的算法,即通过已知条件,利用特定关系得出中间推论,直至得到结果的算法

递推算法免除了数据进出栈的过程,不需要函数不断的向边界值靠拢,而直接从边界出发,直到求出函数值. 

递推的精髓在于f(n)的结果一般由f(n-1)、f(n-2)…..f(n-k)的前k次结果推导出来

不容易从简单而特殊的案例,找到问题的一般规律,写出f(n)与f(n-1)、f(n-2)…..f(n-k)之间的关系表达式,从而得出求解的结果

课本陈惠南算法书第26页

尾递归

递归函数return语句是自身的函数

类似迭代: 占据恒量的内存

同上迭代

function story() {

从前有座山,山上有座庙,

庙里有个老和尚,

一天和尚对小和尚讲故事:story()

}

    

转载于:https://www.cnblogs.com/liguo-wang/p/8757918.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值