本章内容:

学习递归;如何将问题分解成基线条件和递归条件。
   
1) 每个递归函数都有两部分:基线条件(base case)和递归条件(recursive base)。例如:打印3...2...1

def countdown(i):print(i)if i <= 0:returnelse:countdown(i-1)


    
2) 调用栈(call stack):调用另一个函数时,当前函数暂停并处于未完成状态。
   
3)小结:
    递归指的是调用自己的函数;
    每个递归函数都有两个条件:基线条件和递归条件。
    栈有两种操作:压入和弹出。
    所有函数调用都进入调用栈。
    调用栈可能很长,这将占用大量的内存。

递归调用计算7的阶乘:

def fact(x):if x == 1:return xelse:return x*fact(x-1)print(fact(7))

图解算法学习笔记(三):递归相关推荐

  1. 图解算法学习笔记(四):快速排序

    目录 1) 示例1: 2)快速排序 3) 再谈大O表示法 4)小结 本章内容:学习分而治之,快速排序 1) 示例1: 假设你是农场主,有一小块土地,你要将这块地均匀分成方块,且分出的方块尽可能大.如何 ...

  2. 图解算法学习笔记(八):贪婪算法

    目录 (1)背包问题 (2)集合覆盖问题 (3)NP完全问题 (4)小结 本章内容: 学习如何处理没有快速算法的问题(NP完全问题). 学习近似算法,使用它们找到NP问题的近似解. 学习贪婪策略. ( ...

  3. 图解算法学习笔记(六):广度优先搜索

    目录 1)图简介 2)图是什么 3)广度优先搜索 4)实现图 5)实现算法 6)小结 本章内容; 学习使用新的数据结构图来建立网络模型: 学习广度优先搜索: 学习有向图和无向图: 学习拓扑排序,这种排 ...

  4. 图解算法学习笔记(目录)

    今天遇到一本好书,如下,书很薄,不到200页,有将近400张图片,算法介绍的很有趣.这也是我读的第三本袁国忠先生翻译的书,向两位致敬. 目录大致如下; 第1章:二分查找和大O表示法: 第2章:数组和链 ...

  5. 图解算法学习笔记(九):动态规划

    目录 (1)背包问题 (2)最长公共子串 (3)小结 本章内容: 学习动态规划,它将问题分成小问题,并先着手解决这些小问题. 学习如何设计问题的动态规划解决方案. (1)背包问题 我们再看第八章的背包 ...

  6. 图解算法学习笔记(七):狄克斯特拉算法

    目录 1)使用狄克斯特拉算法 2)术语 3)实现 4)小结 本章内容; 介绍加权图,提高或降低某些边的权重: 介绍狄克斯特拉算法,找出加权图中前往X的最短路径: 介绍图中的环,它导致狄克斯特拉算法不管 ...

  7. 图解算法学习笔记(一): 算法简介

    本章内容: 编写第一种查找算法--二分查找. 学习如何谈论算法的运行时间--大O表示法. 1) 算法是一组完成任务的指令,任何代码片段都可视为算法. 2)二分查找:一种查找算法,其输入是一个有序的元素 ...

  8. 图解算法学习笔记(五):散列表

    目录 1)示例1: 2)散列函数 3)应用案例 4)冲突 5)性能 6)小结 本章内容: 学习散列表,最有用的数据结构之一. 学习散列表的内部机制:实现.冲突和散列函数. 1)示例1: 假设你在一家杂 ...

  9. 图解算法学习笔记(二): 选择排序

    目录 1)数组和链表: 2)选择排序算法: 3)小结 本章内容: 两种基本数据结构:数组和链表: 选择排序算法: 1)数组和链表: 数组是连续的内存单元,链表可以不连续: 链表存储单元如图所示,每一个 ...

最新文章

  1. lower_bound和 upper_bound 用法(STL)
  2. WinForm中的各种对话框
  3. mysql5.5表的创建源码_mysql5.5 源码安装
  4. android编译的tool版本有多少,android gradle tool版本从3.3升级到3.6.3问题记录
  5. prometheus命令_Prometheus
  6. vue loading组件
  7. android9 三星 港版,【极光ROM】-【三星S20+(国行/港版/台版/韩版/美版) G986X-高通865】-【V9.0 Android-R-UB6】...
  8. linux像win7,如何使Ubuntu看起来像Windows 7
  9. 银行卡收单相关文章汇集
  10. 知识管理案例:谁来负责知识管理?
  11. USB协议详解第20讲(USB包-帧首包SOF)
  12. 第2章 Spring Boot实践,开发社区登录模块(上)
  13. Oracle 计算起始日期之间的工作日天数(目前只支持同一年)
  14. 密码学的安全性浅析-3
  15. 搭建hadoop集群从裸机开始
  16. 携程网被黑,谁干的??
  17. 太原理工大于丹计算机,太原理工大学硕士生将参加中国第30次南极考察
  18. 本地搭建WordPress教程
  19. Excel怎么快速计算人数
  20. IPD管理体系中的产品和技术研发执行团队

热门文章

  1. php 强制刷新一次,强制浏览器使用PHP刷新所有内容
  2. jquery查找ul属性不是hide,jQuery的ul显示/隐藏功能
  3. 7-2 地下迷宫探索 (30 分)(C语言实现)
  4. 在ES6类中绑定事件
  5. ubuntu14.04 开启root登陆
  6. Linux 信号signal处理函数
  7. grpc入门到精通_Spring Cloud 从入门到精通(一)Nacos 服务中心初探
  8. 制作斜坡单元的两种方法
  9. 【转】DELPHI 对DICOM中的窗宽、窗位调整
  10. 【转】Azure Messaging-ServiceBus Messaging消息队列技术系列2-编程SDK入门