关于递归函数

递归函数调用自身的过程有点类似于伪代码,用一个简单的函数来代表对一个复杂问题的求解

递归函数会通过不断地调用自己或者以其他形式 降低 问题规模或者问题的复杂性

当问题的规模或复杂性降低到一个比较容易处理的部分时,停止递归过程,改用直接的方式来处理这个小规模或者低复杂性的问题

在进行递归调用时,我们不需要考虑函数调用自己到底是怎么样一个过程,我们只需要把它当作一个黑盒,了解其传入的参数和使用的功能即可。

以折半查找为例:

我们假设折半查找的函数biSearch接受三个参数,分别是被查找的数组,以及表示查找边界上下限的两个量,返回值为目标值的位置,查找失败时返回-1,则biSearch的原型如下:

int biSearch(int * arr, int le, int ri);

在函数体之中,我们首先判断,情况是否复杂,如是否le <= ri

如果情况简单,则直接处理,这里的简单情况对应着查找失败,我们返回-1(当然,对于这个简单的情形,我们也可以判断le 和 ri之间的差值,倘若较小,我们可以采用顺序查找)

如果情况仍然复杂,则仍旧以伪代码的形式处理,我们在mid + 1, ri或者le, mid - 1所在的区间之中,继续进行二分查找。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值