我正在学习递归,并想在Python(龟)中实现这一点:
我做了一个递归函数,我从左下角开始绘制一个正方形,面向东方#39;我可以让其中一方的正方形正确,但不能正确。
在绘制较小的正方形之前向后移动会产生奇怪的结果:
from turtle import *
delay(0)
speed(10)
def square(length, level):
if level == 0:
return
else:
# Start from the bottom-left corner
forward(length)
# Right square
square(length // 2, level - 1)
lt(90)
forward(length)
lt(90)
forward(length)
lt(90)
forward(length)
lt(90)
### Try moving backward before drawing
##backward(length / 2)
# Left square
square(length // 2, level - 1)
square(110, 4)
学习这些分形的任何提示或好例子?
答案 0 :(得分:1)
使用turtle
绘制分形时,您应该注意以下几点:
您的代码中存在两个问题:
backward(length // 2)
以正确开始绘制左方(正如您在评论中所做的那样)这是带有一些评论的代码:
def square(length, level):
# Start from the bottom-left corner
if level == 0:
return
else:
# Draw the bottom side
forward(length)
# Draw the right square
square(length // 2, level - 1)
# Assume we ended at the same position
# Draw the right side
lt(90); forward(length)
# Draw the upper side
lt(90); forward(length)
# Draw the left side
lt(90); forward(length)
# Go backward
lt(90); backward(length // 2) ;
# Draw the left square
square(length // 2, level - 1)
# Go back to the original position
forward(length // 2)
基本上,你错过了将乌龟移动到原始位置的最后一个forward(length // 2)
。