我想创建这样的输出:
我必须使用递归。
到目前为止,这是我的代码:
from turtle import *
def drawFlake(length,depth):
fd(length)
input("first line done")
if depth>0:
left(60)
drawFlake(length/3,depth-1)
input("1")
left(120)
drawFlake(length/3,depth-1)
input("2")
left(120)
drawFlake(length/3,depth-1)
input("3")
left(120)
drawFlake(length/3,depth-1)
input("4")
left(120)
left(180)
#drawFlake(length/3,depth-1)
input("1")
left(120)
drawFlake(length/3,depth-1)
input("THIS IS THE LAST")
left(60)
left(180)
fd(length)
drawFlake(100,3)
这会产生这样的输出(这里N = 3)
问题是左侧的长线。应该没有长线。相反,应该有另一个片状模式
我究竟做错了什么 ?
编辑::
我设法弄出了更好的东西。但这仍然不是完美的:
def doFigure(length,depth):
left(120)
fd(length)
if depth>1:
doFigure(length/3,depth-1)
bk(length)
right(60)
fd(length)
if depth>1:
doFigure(length/3,depth-1)
bk(length)
right(60)
fd(length)
if depth>1:
doFigure(length/3,depth-1)
bk(length)
right(60)
fd(length)
if depth>1:
doFigure(length/3,depth-1)
bk(length)
right(60)
fd(length)
if depth>1:
doFigure(length/3,depth-1)
bk(length)
right(60)
fd(length)
if depth == 3:
doFigure(length/3,depth-1)
bk(length)
right(180)
注意最后5行。我必须对值3进行硬编码以获取正确的值。
最佳答案
这是一个解决方案:它并不完美,因为与您发布的图形相比,它在主茎上有一个额外的束。
让我知道这是否适合您。
从海龟进口*
def drawFlake(length, depth):
"draws a flake"
if depth > 0:
for _ in range(6):
forward(length)
drawFlake(length // 3, depth - 1)
backward(length)
left(60)
drawFlake(200,4)