递归:带有 python 乌龟的简单螺旋
Recursion: simple spiral with python turtle
我正在尝试使用递归重新创建函数 spiral()
,该函数采用参数 initLen
(第一边的像素长度)、N
(连接线段的角度)和 mult
(一个浮点数,表示每个转弯后每个段的长度 bigger/smaller - 例如:mult = 0.5
表示每个段的长度是前一个段的一半)。当线段长度小于 1 或大于 500 时,绘图应停止。
spiral( 100, 90, 0.9 )
的所需输出示例:
我试过这个:
def spiral( initLen, N, mult ):
if initLen> 500:
return
elif initLen< 1:
return
else:
pendown()
forward(initLen)
left(360.0/N)
spiral((initLen*mult),angle, mult)
认为唯一改变的是每回合的段长度(按乘数的顺序)。
我的 spiral( 20, 90, 0.9 )
程序输出是....
与上面不太相似...
有什么提示吗?
在您调用的函数中
forward(initialLength)
但函数调用和函数其余部分中引用的变量是
initLen
所以 initialLength 的值可能是静态的,而不是您想要的。
您发布的示例调用 (spiral( 100, 90, 0.9 )
) 似乎将第二个参数视为每次转弯的度数,而您将其视为在代码中进行完整 360 度转弯的转弯次数。
将调用更改为 spiral(20, 4, 0.9)
或将调用更改为 left(N)
。
我正在尝试使用递归重新创建函数 spiral()
,该函数采用参数 initLen
(第一边的像素长度)、N
(连接线段的角度)和 mult
(一个浮点数,表示每个转弯后每个段的长度 bigger/smaller - 例如:mult = 0.5
表示每个段的长度是前一个段的一半)。当线段长度小于 1 或大于 500 时,绘图应停止。
spiral( 100, 90, 0.9 )
的所需输出示例:
我试过这个:
def spiral( initLen, N, mult ):
if initLen> 500:
return
elif initLen< 1:
return
else:
pendown()
forward(initLen)
left(360.0/N)
spiral((initLen*mult),angle, mult)
认为唯一改变的是每回合的段长度(按乘数的顺序)。
我的 spiral( 20, 90, 0.9 )
程序输出是....
与上面不太相似...
有什么提示吗?
在您调用的函数中
forward(initialLength)
但函数调用和函数其余部分中引用的变量是
initLen
所以 initialLength 的值可能是静态的,而不是您想要的。
您发布的示例调用 (spiral( 100, 90, 0.9 )
) 似乎将第二个参数视为每次转弯的度数,而您将其视为在代码中进行完整 360 度转弯的转弯次数。
将调用更改为 spiral(20, 4, 0.9)
或将调用更改为 left(N)
。