我正在尝试使用递归函数绘制树。这是我最好的一击。我知道我很远,但我很难解决它。任何帮助将不胜感激!
def svTree( trunkLength, levels ):
""" uses the turtle drawing functions to return a tree with a specified number of levels
input: two integers, trunkLength and levels
"""
newtrunkLength = trunkLength *.5
if levels ==1:
penup()
else:
forward(trunkLength)
left(45)
svTree(trunkLength * 0.5,levels -1)
right(90)
forward(trunkLength *.5)
svTree(trunkLength * 0.5,levels -1)
left(45)
backward(trunkLength)
forward(trunkLength)
right(45)
svTree(trunkLength * 0.5,levels -1)
left(90)
svTree(trunkLength * 0.5,levels -1)
right(45)
backward(trunkLength)
return svTree(newtrunkLength,levels -1)
这是我对它的新尝试:我认为它更接近,因为我可以制作Y然后我认为我的递归步骤有缺陷...请帮忙!谢谢! :)
def svTree( trunkLength, levels ):
""" uses the turtle drawing functions to return a tree with a specified number of levels
input: two integers, trunkLength and levels
"""
newtrunkLength = trunkLength *.5
if levels ==1:
penup()
else:
forward(trunkLength)
left(45)
forward(trunkLength * 0.5)
penup()
backward(trunkLength * 0.5)
right(90)
pendown()
forward(trunkLength *.5)
penup()
backward(trunkLength *.5)
right(180)
left(45)
right(180)
return svTree(newtrunkLength,levels-1)
答案 0 :(得分:1)
复制粘贴是一个很好的迹象,表明你做错了什么。排除重复部分。
最有可能的是,您不想在备份时绘制,因此请在penup()
之前调用backward()
。
此外,您希望所有子树都从同一点增长,因此您需要在每次递归调用后返回。
最后,你永远不会使用返回的值,那么return
行中的递归调用试图实现什么?