算法图解之递归

递归:

可以让程序更容易理解,然而循环可以使程序的性能提高。

每个递归函数都要有两部分:

基线条件

指的是函数不再调用自己,避免死循环
##### 递归条件
指的是函数调用它本身
## 递归调用栈
递归函数也使用调用栈,例子如下:

def fact(x): 
 if x == 1: 
 return 1 
 else: 
 return x * fact(x-1)

内存中的具体分析如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
虽然使用栈很方便,但是也要付出代价:存储详尽的信息可能要占用大量的内存资源。每个函数的调用都要占用一定的内存,如果栈很高的话,就意味着计算机存储了大量的调用信息。有两种选择:

  • 重新编写代码,利用循环实现
  • 使用尾递归。(在后面的学习中,我会详细介绍)
小结:
  • 递归指的是自己调用自己的函数
  • 每个递归函数必须包含两个条件:基线条件和递归条件
  • 栈有两种操作:压入(push)和弹出(pop)
  • 所有的函数调用都进入调用栈
  • 调用栈可能很长,占用大量的内存资源。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值