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

- 代码复用和模块化设计

- 函数递归的理解

- 函数递归的条用过程

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

把代码当成资源进行抽象

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

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

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

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

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

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

模块化设计

分而治之

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

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

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

模块化设计

两大理念

紧耦合和松耦合

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

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

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

Python 中的递归分析

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

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

递归中的两个关键特征

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

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

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

递归的实现

 

递归的过程

 

 字符串反转的例子

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

rvs("Education")
rvs("Febuary")
    

 斐波那契数列的编程 

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

汉诺塔问题

count =0
def hanoi(n,src,dst,mid):
    global count
    if n==1:
        print("{}:{}->{}".format(1,src,dst))
        count+=1
    else:
        hanoi(n-1,src,mid,dst)
        print("{}:{}->{}".format(n-1,src,dst))
        count+=1
        hanoi(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=0
    kohe(400,level)
    tl.right(120)
    kohe(400,level)
    tl.right(120)
    kohe(400,level)
    tl.hideturtle()
main()
    

 科赫小雪花扩展

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值