数据结构_递归

递归

递归的定义

在这里插入图片描述

递归的简单例子

在这里插入图片描述
这是一个简单的例子,也表明了递归的一些特征,比如递归有出口,这里就是n==0,还有调用自己,调用自己给人的感觉是想再找数列an与an-1…等的关系,递归的的执行就像我们不断的把an展开直到他变成a0
,a1什么的,但是不能这样简单的认为。
在看几个例子:
在这里插入图片描述
这两个例子就像我们不断地把调用自己的代码展开展到出口,从最初的从头到尾执行。
再看一个
在这里插入图片描述

递归原理

在这里插入图片描述

在这里插入图片描述
这说明递归式可以用栈来代替的

经典例子

在这里插入图片描述
找准an,an-1代表的意义
在这里插入图片描述

递归正确性的证明

在这里插入图片描述
就是数学归纳法
在这里插入图片描述
这个也可以用数列来做an=2xan-1 +1;a1=1;

递归化成非递归

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
蓝色虚线表示入栈,红色虚线代表出栈,这就是为什么代码后面一坨出栈的代码。
在这里插入图片描述
在这里插入图片描述
进一步化简(既然都是不断回去,那么为什么不整个循环代替):
在这里插入图片描述
看个例子:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
看个练习:
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值