- 代码复用和模块化设计

- 函数递归的理解

- 函数递归的条用过程

代码复用和函数递归能够极大的减少代码的编写

把代码当成资源进行抽象

-代码资源化: 程序代码是一种用来表达计算的资源

- 代码抽象化: 使用函数等方法对代码赋予更高级别的定义

- 代码复用: 同一份代码在需要使用时可以被重复使用

-- 代码复用的 实现,主要通过函数对象这两种方式实现代码复用。

函数: 将代码命名在代码层面进行了初步抽象

对象:  属性和方法,<a>.<b>  和<a>.<b>()  在函数之上在此组织进行抽象

模块化设计

分而治之

- 通过函数或对象封装的思想将程序划分为模块及模块间的表达

- 主要包括:主程序,子程序和子程序间关系

- 分而治之: 一种分而治之,分层抽象,体系化的设计思想

模块化设计

两大理念

紧耦合和松耦合

-紧耦合: 两个部分之间交流很多,无法独立存在;

- 松耦合: 两个部分之间交流较少,可以独立存在

模块内部紧耦合,模块间以松耦合的形式进行组织

Python 中的递归分析

递归的概念,在函数使用的过程中,函数自身的方式就是递归,递归在数学里也广泛存在

阶乘的定义,就是一个很好的递归定义

递归中的两个关键特征

- 链条: 计算过程中存在递归链条,在阶乘的过程中的链条就是 n!=n*(n-1)!

- 基例:存在一个或多个不需要再次递归的基例  n=0 的时候,n!=1

递归也是数学归纳法在 程序思想中的基本体现

递归的实现

递归的过程

字符串反转的例子

def rvs(s):if s =="":return selse:return rvs(s[1:])+s[0]  ##逐层递归rvs("Education")
rvs("Febuary")

斐波那契数列的编程

def f(n):if n==1 or n==2:return 1else:return f(n-1)+f(n-2)f(10)

汉诺塔问题

count =0
def hanoi(n,src,dst,mid):global countif n==1:print("{}:{}->{}".format(1,src,dst))count+=1else:hanoi(n-1,src,mid,dst)print("{}:{}->{}".format(n-1,src,dst))count+=1hanoi(n-1,mid,dst,src)hanoi(3,"A","B","C")
print(count)

PyInstaller 可以将源代码打包成可执行的文件

科赫雪花--科赫曲线,科赫曲线的模型

import turtle as tl
def kohe(size,n):if n==0:tl.fd(size)else:for angle in [0,60,-120,60]:tl.left(angle)kohe(size/3,n-1)
def main():tl.setup(600,600)tl.penup()tl.goto(-200,100)tl.pendown()tl.pensize(2)level=0kohe(400,level)tl.right(120)kohe(400,level)tl.right(120)kohe(400,level)tl.hideturtle()
main()

科赫小雪花扩展

Python 语言程序设计(5-3) 代码复用与函数递归相关推荐

  1. python函数和代码复用思维导图_Python语言程序---代码复用与函数递归(二)

    Python语言程序---代码复用与函数递归(二) 函数递归 在函数定义中,调用函数自身的方式就是递归. 递归并不是程序设计的专有名词,在数学中也广泛存在.例如:n!.在n!中,我们定义当n=0时,n ...

  2. Python函数详解:函数定义、调用,lambda函数,高阶函数map,filter,reduce,函数式编程,模块化设计、代码复用、函数递归、enumerate()

    一.函数 函数是一段具有特定功能的.可重用的语句组,通过函数名来表示和调用. 函数是一段代码的抽象和封装 函数是一段具有特定功能的.可重用的语句组 函数是一种功能的抽象,表达特定功能 两个作用:降低编 ...

  3. python中的代码复用与函数递归

    代码复用与模块化设计 所谓的代复用,顾名思义,也就说同一份代码在需要的时候可以被重复使用,有两种形式:一个是函数,一个是对象. 模块化设计,简单地来讲,就是通过函数或对象封装将程序划分为模块及模块间的 ...

  4. Python-第五周-代码复用与函数递归-02

    1.代码复用: 简而言之,就是重复使用该代码,例如 多次调用一个函数. . . 2.模块化设计: 3.函数递归: 基例:就是求 n 阶层时 n=1 的那部分. 链条:就是求 n 阶层时 n不为1 的那 ...

  5. [转载] 《Python语言程序设计》课程笔记

    参考链接: Python程式设计语言 文章目录 第一部分 Python快速入门第1周 Python基本语法元素第2周 Python基本图形绘制 第二部分 Python基础语法第3周 基本数据类型3.1 ...

  6. Python语言程序设计笔记(全)

    Python语言程序设计 源代码人类可理解 目标代码 计算机直接执行 文章目录 Python语言程序设计 1.编译与解释 2.编程语言分类 3.python语言简介 4. 下载配置python 5.编 ...

  7. Python语言程序设计笔记

    例:获得用户输入数字N,计算并输出从N开始的5个质数,单行输出 首先:定义函数判断一个数是否是质数,return True/False,注意return True的格式,不在for循环体中,在函数体中 ...

  8. (转载)北京理工大学:《Python语言程序设计》____笔记整理

    版权声明:博客追求原创,如果有借鉴尽量都在文后注明 https://blog.csdn.net/DefaultTest/article/details/80458778 # 这门课程是我最强烈推荐的p ...

  9. 北京理工大学:《Python语言程序设计》____笔记整理

    # 这门课程是我最强烈推荐的python入门课程之一.原因有三:其一,其更加关注编程的思想,极具有启发性:其二,"小"但系统,可扩展性强:其三,有配套线上练习和测试. # 本文将每 ...

最新文章

  1. 免费阅读软件轻快阅读器怎么用
  2. htaccess分布式配置文件常用写法
  3. gin redis 链接不上_内存优化,Redis是如何实现的!
  4. 触发器初接触-同步两个表的指定字段
  5. boost::mp11::mp_none_of相关用法的测试程序
  6. linux 删除带a的文件格式,linux基础命令练习题
  7. 【HDU - 5968】异或密码(思维,STLmap)
  8. plot函数_时间序列:python移动窗口函数前言
  9. 指针与引用的混合使用总结
  10. Struts2工作流程
  11. 八大排序算法-java实现
  12. linux 指令tftp传输文件_tftp命令怎么传输文件,tftp命令怎么传输文件具体操作方法?...
  13. python3+selenium实现126邮箱登陆并发送带附件的邮件(显示等待版本)
  14. 魔百盒CM201-2_YS(易视腾代工)_MV300/300H芯片_蓝牙语音版_卡刷通刷_刷机固件
  15. win7的Par虚拟机版优化(parellel desktop)
  16. JSP大学实用教程(第2版)代码一
  17. ERROR dispatch for GET /error?thingName=lxyrequestId=123, parameters={masked}
  18. 有skycc营销软件,我的网站PR飙升
  19. python利用列表计算斐波那契数列前30项_使用python计算斐波那契数列
  20. 豆瓣电影Top250——电影详细

热门文章

  1. Java 学习经验[转]
  2. [中级01]java为什么能跨平台,而C\C++语言不能跨平台
  3. 2021百强县市名单
  4. winetricks启动报错:please retest in a clean 32-bit WINEPREFIX before reporting a bug解决
  5. Android音量设置流程干货版
  6. ftp搜索文件_CrossFTP for Mac(FTP客户端)
  7. c++删除数组中重复元素_C / C ++中的数组
  8. mac git配置 idea
  9. The application could not be installed: INSTALL_FAILED_INSUFFICIENT_STORAGE
  10. php 0 n随机数,PHP n个不重复的随机数生成代码