尝试写了一些递归的例子:如PascalTriangle、谢尔平斯基三角形,
PascalTriangle
def TriangleList(num):
if num==1:
return [1]
elif num==2:
return [1,1]
else:
List=[1,1]
for i in range(1,num-1):
nextnum=TriangleList(num-1)[i-1]+TriangleList(num-1)[i]
List.insert(i,nextnum)
return List
def PascalTriangle(num):
for i in range(1,num+1):
str1=' '.join(str(i) for i in TriangleList(i))
print(str1.center(50))

谢尔平斯基三角形
from turtle import *
def drawTriangle(points,t):
t.up()
t.goto(points[0])
t.down()
t.goto(points[1])
t.goto(points[2])
t.goto(points[0])
def getMid(p1,p2):
return ((p1[0]+p2[0])/2,(p1[1]+p2[1])/2)
def sierpinski(points,degree,t):
drawTriangle(points,t)
if degree !=0:
sierpinski([points[0],getMid(points[0],points[1]),getMid(points[0],points[2])],degree-1,t)
sierpinski([points[1],getMid(points[1],points[0]),getMid(points[1],points[2])],degree-1,t)
sierpinski([points[2],getMid(points[2],points[1]),getMid(points[0],points[2])],degree-1,t)
t=Turtle()
myWin=t.getscreen()
mypoints=[(-500,-250),(0,500),(500,-250)]
sierpinski(mypoints,4,t)
myWin.exitionclick()
