从"把大象放冰箱"理解递归调用

递归算法中递是"去"的意思, 归是"回"的意思, 整个递归就是"有去有回"的过程. 

什么样的问题要用递归来解决? 一句话: 对于问题N,如果N-1已经解决了,那么N是否很容易解决。

学递归调用要明确以下三点:

1、整个递归的终止条件是什么?

2、应该返回给上一级的的返回值是什么?

3、一级递归要做什么?(重复逻辑)

其实2可以和3合并:

1. 递归终止条件

2. 把问题规模缩小

 

启发的例子:

下楼拿快递就是个递归过程 :  

你在床上葛优躺, 快递到了, 但要自己去自提柜拿,  你依次打开卧室门, 屋门 , 楼门, 快递柜门, 拿到了心仪的快递.(这是"递过程", 没错是快递的递)

取到快递, 你先打开楼门, 再打开屋门, 再打开卧室门, 最后再次回到床上葛优躺. (这是"归过程")

神奇的取快递, 竟然神不知鬼不觉的完成了一次递归算法. 

这里面思考下递归三要素: 

1、整个递归的终止条件是什么?   ----当然是拿到快递(剩下的就是返回卧室)

2、应该返回给上一级的的返回值是什么?  ----取快递的状态: 归的过程才会有返回值, 返回值是快递包裹以否已经通过了这一级的门.

3、本级递归要做什么?  ----开门

递过程”是指:递归问题必须可以分解为若干个规模较小,与原问题形式相同的子问题,这些子问题可以用相同的解题思路来解决,就像上面例子中的开门一样;

归过程”是指 : 这些问题的演化过程是一个从大到小,

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值