赞
踩
汉诺塔问题求解,在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()
此节只为扩展,不做详解!!!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。