关于递归(递归那些事儿)

递归是一种函数自身调用自身的编程方法,常用于解决大型复杂问题的简化。适用条件包括存在递归终止条件,小问题的解决方式与原问题相同,以及问题可不断缩小。递归主要应用于数据关联、搜索和树结构等问题。递归的实现关键在于明确终止条件、简化问题规模。文中提供两种递归模型,并包含例题解析。
摘要由CSDN通过智能技术生成

1.什么是递归
函数自己直接或间接调用自己就是递归
2.递归的作用
把一个大型复杂的问题逐步转化为一个与原问题相似的小问题以求解
这样只需要少量的程序就可以描述出解题过程所需要的反复计算
在减小代码量的同时一定地优化了时间复杂度
这种编程技巧一般用于这几种问题:
(1)下一个数据和上一个数据有关联(eg.辗转相除法)
(2)搜索
(3)好像树也要递归
3.什么条件下可以用递归
(1)有递归终止条件,即当问题足够小时可以轻松解决
(2)把问题规模缩小的之后小问题的解决方法和原问题相同
(3)问题可以缩小到容易解决
4.如何写递归
(1)明确递归终止条件
(2)给出递归终止时的处理办法,且这种方法应该是直观的、容易的
(3)提取重复的逻辑,缩小问题规模
5。递归模板(网上抄的,好像一本通上有更好的)
模型一: 在递去的过程中解决问题
function recursion(大规模)
{
if (end_condition)
{ // 明确的递归终止条件
end; // 简单情景
}
else
{ // 在将问题转换为子问题的每一步,解决该步中剩余部分的问题
solve; // 递去
recursion(小规模); // 递到最深处后,不断地归来
}
}
模型二: 在归来的过程中解决问题
function recursion(大规模)
{
if (end_condition)
{ // 明确的递归终止条件
end; // 简单情景
}
else
{ // 先将问题全部描述展开,再由尽头“返回”依次解决每步中剩余部分的问题
recursion(小规模); // 递去
solve; // 归来
}
}

例题精选:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值