首页 > 编程语言 > 详细

算法图解学习笔记02:递归和栈

时间:2018-08-01 23:04:36      阅读:421      评论:0      收藏:0      [点我收藏+]

计算机内存原理

  要说递归和栈的问题,首先就要说下计算机内存的基本原理。简单理解计算机内存原理可以将一台电脑看作超市的存包柜,每个柜子都有柜号(即计算机中的地址,如0x000000f)。当需要将数据存储到计算机中时,计算机会提供一个地址。

技术分享图片

  其实算法图解这本书顺序是先写递归再写栈,我认为这样的顺序不好,应当先理解栈之后才能更好理解递归。借用下啊哈算法的图例和解释:

栈限定只能在一端进行插入和删除操作。比如说有一个小桶,小桶的直径只能放一个小球,我们现在向小桶内依次放入2号、1号、3号小球。假如你现在需要拿出2号小球,那就必须先将3号小球拿出,再拿出1号小球,最后才能将2号小球拿出来。在刚才取小球的过程中,我们最先放进去的小球最后才能拿出来,而最后放进去的小球却可以最先拿出来。这就是后进先出,也可以称为先进后出。

技术分享图片

递归

  递归,上一张盗来的图解释下,递归的基本思想就是把规模大的问题转化为规模小的相似的子问题来解决。特别地,在函数实现时,因为解决大问题的方法和解决小问题的方法往往是同一个方法,所以就产生了函数调用它自身的情况,这也正是递归的定义所在。格外重要的是,这个解决问题的函数必须有明确的结束条件,否则就会导致无限递归的情况。

技术分享图片

 

用python实现阶乘解释下递归

1 def fact(x):
2     if x == 1:
3         return 1
4     else:
5         return x * fact(x-1)        

 

  此时计算fact(3)的值

技术分享图片

技术分享图片

技术分享图片

 

算法图解学习笔记02:递归和栈

原文:https://www.cnblogs.com/vincentme/p/9404169.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!