递归:带有 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)