递归思想

递归(Recursive

1、采用递归的思考方式

所有的递归方法都具有以下特点:
☛ 使用 if-elseswitch 语句来引导不同的情况
☛ 一个或多个基础情况(最简单的情况)用来停止递归
☛ 每次递归调用都会简化原始问题,让它不断地接近基础情况,直到它变成这种基础情况为止。

2、递归辅助方法

有时候可以通过针对要解决的初始问題的类似问題定义一个递归方法,来找到初始问題的解决方法。这个新的方法称为递归辅助方法

初始问题可以通过调用递归辅助方法来得到解决。

在递归程序设计中定义第二个方法来接收附加的参数是一个常用的设计技巧。这样的方法称为递归辅助方法(recursive helper method)。

3、应用

3.1 递归选择排序

步骤:

  1. 先找到列表的最小数,并和第一个元素交换,
  2. 然后,在剩余的数中找到最小数,再将它和剩余列表中的第一个元素交换,
  3. 这样的过程一直进行下去,直到列表中仅剩一个数为止。

这个问题可以分解为两个子问题:

  • 找出列表中的最小数,然后将它与第一个数进行交换。
  • 忽略第一个数,对余下的较小一些的列表进行递归排序。

假设第一个数为Min,下标为indexOfMin

3.2 递归二分査找

使用二分査找的前提条件是数组元素必须已经排好序。

二分査找法首先将关键字与数组的中间元素进行比较,考虑下面三种情况。

  • 情况1: 如果关键字比中间元素小,那么只需在前一半数组元素中进行递归査找。
  • 情况2: 如果关键字和中间元素相等,则匹配成功,査找结束。
  • 情况3: 如果关键字比中间元素大,那么只需在后一半数组元素中进行递归査

找。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值