Python中的汉诺塔问题求解和科赫曲线绘制(递归扩展)

    汉诺塔问题求解,在a杆上自上而下、由大到小顺序地串有64个盘子,要求把a杆上的盘子借助c杆全部移动到b杆上。

def hanoi(n,a,b,c):

    if(n>0):

        hanoi(n-1,a,c,b)  #n-1个盘子,借助b杆放在c杆上

        print(“move disc no:{} from pile {} to {}”.format(n,a,b))#第n个盘子从a杆移动到b杆

        hanoi(n-1,c,b,a)  #把c杆上的n-1个盘子借助a杆移动到b杆

hanoi(64,’a’,’b’,’c’)

科赫曲线的基本概念和绘制方法如下:

正整数n代表科赫曲线的阶数,表示生成科赫曲线过程的操作次数。科赫曲线初始化阶数为0,表示一个长度为L的直线。对于直线L,将其等分为三段,中间一段用边长为L/3的等边三角形的两个边替代,得到1阶科赫曲线,它包含四条线段。进一步对每条线段重复同样的操作后得到2阶科赫曲线。继续重复同样的操作n次可以得到n阶科赫曲线。

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(n):
    turtle.setup(800,400)  #启动图形窗口 800*400
    turtle.speed(0)  #控制绘制速度
    turtle.penup()  #让画笔抬起来,即不再在画布上留下轨迹,只是移动而已
    turtle.goto(-300, -50) ##将笔移动到-300,-50位置
    turtle.pendown()  #放下笔
    turtle.pensize(2) #笔的粗度是2
    koch(600,n) #0阶科赫曲线长度,阶数 ,绘制长度为600,阶为n的雪花曲线
    turtle.hideturtle() #隐藏画笔的形状
main(3)#输入你想绘制的几阶科赫曲线

        科赫曲线的雪花效果:

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(600,600)
    turtle.speed(0)
    turtle.penup()
    turtle.goto(-200, 100)
    turtle.pendown()
    turtle.pensize(2)
    level = 5
    koch(400,level)
    turtle.right(120)
    koch(400,level)
    turtle.right(120)
    koch(400,level)
    turtle.hideturtle()
main()

此节只为扩展,不做详解!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清潇沈默

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值