【算法】递归算法及其经典例题

前情提要(小引)

神奇的事情发生了,作为一个算法蒟蒻的我居然也来教各位大佬算法了!!!

十分的不自量力啊啊啊啊啊

知识储备(序)

算法的定义

首先,在学习递归算法这样一个中低阶算法时,我们首先应该了解一下它的字面意思,没错,就是“递”、“归”、“算”、“法”这四个字,它的正确读法为“递归/算法”,前面的“递归”,应该和“递推”、“递进”是互为反义词的关系,那这个“算法”又是什么呢?

——“算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。不同的算法可能用不同的时间,空间或效率来完成同样的任务。一个算法的优劣可以用空间复杂度与时间复杂度来衡量。”         ——百度

别看上面一大堆什么“解题方案的准确而完整的描述”、“一系列解决问题的清晰指令”、“描述解决问题的策略机制”这样的词语,以及“时间复杂度”、“空间复杂度”这样的专有名词,其实算法就是“解决问题的方法”。

例如排序算法,其实就是让你找到或使用一种方法,将一个容器排序;贪心算法,其实就是让你找到一种策略,使收益最大化……

递归算法(正文)

了解了算法的定义,那就一起来看看今天的主角——递归算法吧。

算法思想

递归算法,其实就是定义一个递归函数,进而实现递归算法,但这不就和自定义函数一样,没有区别了吗?而递归和自定义函数之间的一线之隔就是它——递归三要素:①递归函数的功能;②递归函数的终止条件(递归边界);③递归表达式

递归函数的功能指的是这个递归函数的可以用来干什么,例如有的递归函数可以用来计算求和、阶乘等数学问题、有的递归函数可以用来枚举各种棋盘游戏的摆放或移动……这一要素是最好理解的了。

递归函数的终止条件指的是这个递归函数该在什么样的条件下停止,可是既然是一个函数,不就应该调用几次,就运行几次,运行到最后自己就停了吗?怎么还要手动停止?这就牵扯到递归函数最重要的一个要素递归表达式了!

——(重点来了!!!)递归表达式指的是这个递归函数该怎样递归下去,这句话比较难以理解,让我们举个栗子:

若果我们要定义一个计算1~n之间所有数的和的递归函数,该怎样实现呢?

假设当前递归函数的参数只有一个x,表示当前需要被加上的数字,那么1~x的和可以被表达成什么呢?没错,1~x的和,不就是1~(x - 1)的和,再加上x吗?这就和我在

  • 20
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值