Python学习笔记
4.4递归函数
4.4.1 递归函数的定义
函数在定义中调用自身的方式称为递归调用,简称递归。包含递归调用的函数称为递归函数。
递归函数具有就两个关键特征:递归基例和递归链条。
- 递归基例是不需要再次递归的确定值或确定表达式。递归函数可能存在一个或多个基例。
- 递归链条在递归函数中表达递归调用关系,所有递归链条均以一个或多个基例结尾
1 | if <基例条件>: |
下面是计算 n 的阶乘值:
1 | def fact(n): |
4.4.2 计算方法:递归分解法
- 提取递归变量:提取反映递归特征的主要变量;
- 构建递归链条:以递归变量为核心,构建递归链条,初步构造递归函数;
- 确定递归基例:设定递归变量极值,缩小计算问题规模、获得确定结果,作为递归基例,完善递归函数。
递归分解法的核心是以构造递归函数为核心,包含递归变量、递归基调、递归链条。
实例 1:字符串反转
对于用户输入的字符串 s,输出反转后的字符串。
1 | def reverse(s): |
实例 2:斐波那契数列
根据斐波那契数列构建递归函数。
1 | def f(n): |
实例 3:汉诺塔
根据汉诺塔构建递归函数。
1 | #src 为第一个杆,mid 为第二个杆,dst 为第三个杆 |
4.5代码复用和模块化设计
4.5.1抽象和代码复用
- 编程语言从代码层面采用函数和对象两种抽象方式,分别对应面向过程和面向对象。
- 函数是程序的一种基本抽象方式,它将一系列代码组织起来赋予名称,其他程序通过名字调用函数。
- 对象是程序的一种高级抽象方式,它将程序代码组织为更高级别的类。对象包括表征对象特征的属性和代表对象操作的方法。
4.5.2模块化设计
模块是代码组合,表达一个特定功能。模块化设计能够简化程序设计,表现程序结构。
- 紧耦合:尽可能合理划分功能块,功能块内部耦合紧密。
- 松耦合:模块间关系尽可能简单,功能块之间耦合度低。
耦合性是指程序结构中各模块之间相互关联的程度*,它取决于各模块间接口的复杂程度和调用方式。耦合性是影响软件复杂程度和设计质量的一个重要因素。
紧耦合指各模块之间关系紧密,存在较多或复杂的互相调用。紧耦合的缺点在于更新一个模块可能导致其他模块变化,复用较困难。
松耦合一般基于消息或协议实现,传递参数简单,系统交互简单。
4.6Python 标准函数
4.6.1Python 中的函数分类
- python函数有四类,分别是:
- 内置函数:python一经运行就加载到内存的,例如有list,len,str等函数
- 标准库函数:需要用import语句进行导入,常见标准库有time,os等
- 第三方库:需要另外下载到本地的库,例如opencv库,然后用import导入
- 自定义函数:自己在模块里的写的函数
下为标准库中 71 个函数:
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 王显博的个人博客!