美文网首页
算法图解 (三)

算法图解 (三)

作者: EruDev | 来源:发表于2018-05-25 15:40 被阅读0次

递归

基线条件指的是函数不再调用自己, 相当于一个出口; 递归条件指的是函数自己调用自己

栈又称为栈或堆叠, 是计算机科学中一种特殊的串列形式的抽象数据类型, 其特殊之处在于只能允许在链表或数组的一端 (称为堆栈顶端指针) 进行加入数据 (push) 和输出数据 (pop)的运算 (也就是压入和弹出)。 另外栈也可以用一堆数组或链表的形式来完成。 堆栈的另外一个相对的操作方式称为队列。由于堆栈数据结构只允许在一端进行操作, 因此按照后进先出的原理运作

实例

# coding: utf-8
# 阶乘

def  fact(num):
    if num == 1:
        return num
    return num * fact(num - 1)

print(fact(5)) # 120
# coding: utf-8
"""
递归求列表的和
基本思路:
基线条件, 如果列表只有一个元素, 那么就返回这个元素
线性条件, 计算列表除第一个元素外其他数字的和, 将其再与第一个元素相加, 然后再返回
"""

def sum_arr(arr):
    if len(arr) == 1:
        return sum(arr)
    else:
        return arr[0] + sum_arr(arr[1:])

arr = [i for i in range(100)]
print(sum_arr(arr))
# coding: utf-8
"""
递归求列表包含的元素数, 跟上面那题没上面区别- -
基线条件, 如果是空列表, 则返回 0
线性条件, 计算列表除第一个元素外的其他元素的个数和, 然后再加上 1 返回
"""

def count(arr):
    if arr == []:
        return 0
    return 1 + count(arr[1:])

arr = [i for i in range(5)]
print(count(arr))

小结

  • 递归条件指的是函数自己调用自己;
  • 每个递归函数都有两个条件: 基线条件和递归条件;
  • 栈有两种操作: 压入和弹出;
  • 所有函数调用都进入调用栈;
  • 调用栈可能很长, 这将占用大量的内存.

相关文章

  • 算法图解 (三)

    递归 基线条件指的是函数不再调用自己, 相当于一个出口; 递归条件指的是函数自己调用自己 栈 栈又称为栈或堆叠, ...

  • 算法图解学习(三)

    递归: 关于递归经典的例子就是斐波那契数 具体的python代码如下: 栈: 队列:

  • 《算法图解》note 11 总结

    这是《算法图解》的第十一篇读书笔记,是一篇总结。经过1个月的时间,终于把《算法图解》看完了。个人认为,《算法图解》...

  • 算法图解读书笔记

    date: 2017-9-16 11:11:15title: 算法图解读书笔记 算法图解: http://www....

  • 算法图解 读书笔记

    date: 2017-9-16 11:11:15title: 算法图解读书笔记 算法图解: http://www....

  • 算法学习工具

    算法图解可视化工具

  • 图解LZ77压缩算法

    图解LZ77压缩算法

  • 前端

    买一本算法书看一下算法图解

  • LZW压缩算法

    参考链接:超级简单的数据压缩算法—LZW算法压缩算法——lzw算法实现LZW算法 LZW 压缩算法正确图解

  • 2018-05-10

    算法图解 p28 选择排序

网友评论

      本文标题:算法图解 (三)

      本文链接:https://www.haomeiwen.com/subject/oyhujftx.html