算法图解学习(三)

递归:

递归简单说就是自己调用自己。

一般来说,递归需要有边界条件,当边界条件不满足时,递归前进;当边界条件满足时,递归返回。

通常在解决问题时,使用循环可能性能更高,但如果使用递归,程序会更容易理解。

递归通常很耗内存,这也是有时使用循环也不用递归的原因。

关于递归经典的例子就是斐波那契数

具体的python代码如下:

def fac(n):
    if n<=1:
        return n
    else:
        return fac(n-1) + fac(n-2)

for i in range(6):
    print(fac(i),end=' ')
#OUTPUT:0 1 1 2 3 5 

栈:

基本特点分为两类: 
  1:先进后出,后入先出(类似于洗完盘子堆起来的盘子,行人坐电梯)
  2:除头尾节点之外,每个元素都有一个前驱,一个后继
栈有两种基本操作:压栈(PUSH),弹栈(POP)

队列:

队列是先进先出的线性表(类似于饭堂打饭,商场里购物付款),通常用数组和链表来实现
队列只允许从后端进行插入操作,在前端进行删除操作
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,663评论 25 708
  • 考槃在涧阅读 390评论 1 1
  • 2018年3月30日 星期五 农历二月初十四 天气晴 作息:昨晚23:00睡,今早4:46起床 学习:赖老师《学说...
    饶爱兰阅读 181评论 0 0
  • 题目: 将1~9这9个数分别代替ABCDEFGHJ九个英文字母,使每个等式都成立。 AB÷C-D=E FxG+H=...
    譞然又一阅读 363评论 0 0
  • 无论你遇见谁,他都是你生命中该出现的人, 我很珍惜我们在一起的甜蜜,但同时我也很感激命运带给我们的每一次磨难。在感...
    简言375阅读 383评论 0 0