数据结构—栈与递归

1.递归的基本思想

  • 所谓递归,就是有去有回。
  • 递归的基本思想,是把规模较大的一个问题,分解成规模较小的多个子问题去解决,而每一个子问题又可以继续拆分成多个更小的子问题。
  • 最重要的一点就是假设子问题已经解决了,现在要基于已经解决的子问题来解决当前问题;或者说,必须先解决子问题,再基于子问题来解决当前问题。
  • 或者可以这么理解:递归解决的是有依赖顺序关系的多个问题。

我们假设一个抽象问题有两个时间点要素:开始处理,结束处理。那么递归处理的顺序就是,先开始处理的问题,最后才能结束处理。
假设如下问题的依赖关系:

  • 【A】----依赖---->【B】----依赖---->【C】
  • 我们的终极目的是要解决问题A,
  • 那么三个问题的处理顺序如下:
  • 开始处理问题A;
  • 由于A依赖B,因此开始处理问题B;
  • 由于B依赖C,开始处理问题C;
  • 结束处理问题C;
  • 结束处理问题B;
  • 结束处理问题A。

2.从函数调用看广义递归

  • 对于软件来说,函数的调用关系就是一个广义递归的过程,如下,
func_A()
{
    func_B();
}
func_B()
{
    func_C();
}
func_C()
{
    /
}
  • 调用函数A;
  • 调用函数B࿱
  • 5
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值