递归思想

本文围绕递归算法展开,介绍其定义,即程序调用自身,将大问题转化为相似小问题求解。阐述递归需满足的条件,包括可化为子问题、调用次数有限、有结束时间等。还提及判断递归正确性的方法、递归过程、编程模型,指出递归效率低于循环。

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

递归

定义: 程序调用自身的编程技巧称为递归( recursion)。它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。一般来说,递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回。

递归的条件

1、符合递归的描述:需要解决的问题可以化为子问题求解,而子问题求解的方法与原问题相同,只是数量增大或减少。
2、递归的调用次数是有限的
3、必须有递归结束的时间

递归的过程

递归的流程

如何判断递归是否正确

1、当n =0,1时结果正确;
2、假设递归对于n是正确的,同时对于n+1也是正确的

图解

引用
同时也是入栈和出栈的顺序图

递归算法的编程模型

在递去的过程中解决问题

function recursion(大规模){
	if(end_codition){ //明确的递归终止条件
		end; //简单情景
	}else{//将问题转换为子问题的每一步,解决该步中剩余部分的问题
		solve//递去
		recursion(小规模) //递去到最深处后不断的归来
	}	
}

在归来的过程中解决问题

function recursion(大规模){
	if(end_codition){ //明确的递归终止条件
		end; //简单情景
	}else{//先将问题全部描述展开,再由尽头“返回”依次解决每步中剩余部分的问题
     	recursion(小规模) //递去
		solve//归来	
	}	
}

效率问题

递归的效率要小于循环的效率

本文参考:算法设计方法:递归的内涵与经典应用
作者:书呆子Rico

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值