Python“科赫雪花小包裹”——代码复用与函数递归

博客介绍了代码复用与模块化设计。代码复用将代码资源化、抽象化,可重复使用,函数和对象是主要形式。还阐述了递归,即函数定义中调用自身,有递归链条和基例两个关键特征,并给出n!、字符串反转等递归示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

代码复用与模块化设计
代码复用:把代码当成资源进行抽象
-代码资源化:程序代码是一种用来表达计算的“资源”
-代码抽象化:使用函数等方法对代码赋予更高级别的定义
-代码复用:同一份代码在需要时可以被重复使用

函数和对象是代码复用的两种主要形式。
在这里插入图片描述

递归:函数定义中调用函数自身的方式
两个关键特征:
-链条:计算过程存在递归链条
-基例:存在一个或多个不需要再次递归的基例

递归示例1:n!

def fact(n):
    if n==0:
        return 1
    else:
        return n*fact(n-1)
print(fact(10))

递归示例2:字符串反转

def rvs(s):
    if s=="":
        return s
    else:
        return rvs(s[1:])+s[0]
print(rvs("lucky"))

递归示例3:斐波那契数列

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

递归示例4:汉诺塔

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,src,dst))
        count+=1
        hanoi(n-1,mid,dst,src)
hanoi(3,'A','C','B')
print(count)

科赫雪花小包裹
在这里插入图片描述

import turtle
def koch(size,n):  #大小为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(600,600)
    turtle.penup()
    turtle.goto(-200,100)
    turtle.pendown()
    turtle.pensize(2)
    level=2
    koch(400,level)
    turtle.right(120)
    koch(400,level)
    turtle.right(120)
    koch(400,level)
    turtle.hideturtle()
main()
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值