代码复用:把代码当成资源进行抽象
- 代码资源化:程序代码是一种用来表达计算的"资源"
- 代码抽象化:使用函数等方法对代码赋予更高级别的定义
- 代码复用:同一份代码在需要时可以被重复使用
函数 和 对象 是代码复用的两种主要形式
模块化设计
分而治之:模块化表达
- 通过函数或对象封装将程序划分为模块及模块间的表达
- 具体包括:主程序、子程序和子程序间关系
- 分而治之:一种分而治之、分层抽象、体系化的设计思想
紧耦合 松耦合
- 紧耦合:两个部分之间交流很多,无法独立存在
- 松耦合:两个部分之间交流较少,可以独立存在
- 模块内部紧耦合、模块之间松耦合
函数递归:函数中调用函数自身的方式
两个关键特征:链条、基例
- 链条:计算过程存在递归链条
- 基例:存在一个或多个不需要再次递归的基例
类似数学归纳法
- 数学归纳法
- 证明当n取第一个值n0时命题成立
- 假设当nk时命题成立,证明当n=nk+1时命题也成立
- 递归是数学归纳法思维的编程体现
递归的实现:函数 + 分支语句
- 递归本身是一个函数,需要函数定义方式描述
- 函数内部,采用分支语句对输入参数进行判断
- 基例和链条,分别编写对应代码
字符串反转, 即 >>> s[::-1]
斐波那契数列,F(n) = F(n-1) + F(n-2)
汉诺塔
PyInstaller库
- 将.py源代码转换成无需源代码的可执行文件
- PyInstaller库是第三方库
(cmd命令行) pip install pyinstaller
- Pyinstaller 简单使用
(cmd命令行) pyinstaller -F <文件名.py>
科赫雪花
- 分形几何
科赫曲线的绘制
- 递归思想:函数+分支
- 递归链条:线段的组合
- 递归基例:初始线段
#KochDrawV1.py
import turtle
def koch(size,n):
if n == 0:
turtle.fd(size)
else :
for angle in [0,60,-120,60]:
turtle.left(angle)
koch(size/3,n-1)
def main():
turtle.setup(800,800)
turtle.penup()
turtle.goto(-300,200)
turtle.pendown()
turtle.pensize(2)
level = 3
koch(600,level)
turtle.right(120)
koch(600,level)
turtle.right(120)
koch(600,level)
turtle.hideturtle()
turtle.done()
main()
举一反三
绘制条件的扩展
- 修改分形几何绘制阶数
- 修改科赫曲线的基本定义及旋转角度
- 修改绘制科赫雪花的基础框架图形
分形几何
- 康托尔集、谢尔宾斯基三角形、门格海绵…
- 龙形曲线、空间填充曲线、科赫曲线…
- 函数递归的深入应用…