数据结构与算法 python版 之 递归三定律

#数据结构与算法 python版 之 谢尔宾斯基三角形 , 树叉

1.为了向阿西莫夫的"机器人三定律"直径,递归算法也总结出"三定律"

1递归算法必须有一个基本结束条件(最小规模问题的直接解决)

2递归算法必须能改变状态向基本结束条件演进(减小问题规模)

3递归算法必须调用自身 解决减小了规模的相同问题

##递归可视化 python的海龟作图系统 turtle module

python内置,随时可用以logo语言的创意为基础

意向为模拟乌龟在沙滩上爬行而留下的祖居

爬行:forwodl(n) backward (n)
转向 left(a) ;right(a)

抬笔 放笔 penup() pendown()

笔属性 pensize(s);pencolor© //sc参数
###作图开始
import turtle
t= turtle.Turtle()

t.forward(100) #指挥海龟作图

###作图结束
turtle.done()

import turtle

t= turtle.Turtle()
t.pencolor('red')
t.pensize(3)
for i  in range(5):
t.forwad(100)
t.right(144)
t.hideturtle()

turtle.done()

##谢尔宾斯基三角形

import turtle

t=turtle.Turtle()
def xie(degree,points):
colormap=['blue','red','green','white','yellow','orange']
drawTriagngle(points,colormap[degree])
if degree>0:
xie(degree-1,
{
'left':points['left'],
'top':getMid(points['left'],points['top']),
'right':getMid(points['left'],points['right'])

}
)
xie(degree - 1,
{
'left':getMid(points['left'], points['top']),
'top': points['top'],
'right': getMid(points['top'], points['right'])

})
xie(degree - 1,
{
'left': getMid(points['left'], points['right']),
'top': getMid(points['top'], points['right']),
'right': points['right']

}
)
def drawTriagngle(points, color):
t.fillcolor(color)
t.penup()
t.goto(points['top'])
t.pendown()
t.begin_fill()
t.goto(points['left'])
t.goto(points['right'])
t.goto(points['top'])
t.end_fill()
def getMid(p1,p2):
return ((p1[0]+p2[0])/2,(p1[1]+p2[1])/2)
t=turtle.Turtle()

points ={'left':(-200,-100),
 'top':(0,200),
 'right':(200,-100)}
xie(5,points)

turtle.done()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值