算法复习——递推与递归
想着算法课都快结课了,平时虽然课在上着,也没有系统的总结一下,借着这个机会就来好好梳理一下算法课所学习的内容叭!
首先第一章就是递推与递归
递推呢通常是指通过题目中的已知条件来找到递推关系,确定出递推式从而进行算法的设计。
一、递推的分类
(1)一阶递推
(2)多阶递推
(3)间接递推
(4)多维递推
(5)逆向递推
寻找到正确的递推关系,是算法设计的难点!
递归呢是指在一个函数的实现中,出现对函数自身的调用语句,则该函数称为递归函数。
注:
1、递归函数的时间复杂度一般要高于该问题的递推算法(因为递归函数是通过对自身的反复调用来完成计算的,虽然没有在语句中出现循环,但是其执行却是重复的)
2、递归算法开始应处理递推起点的问题,否则算法会进入无限执行状态。
3、递归算法也依赖于递推关系,以递归函数自身调用的方式,完成递推。
举个递归的小小栗子:
求 n!的递归算法
解:
没有学习递归算法之前,我们只知道用循环来解决这个问题
#