递归:简单螺旋与蟒蛇

时间:2015-06-16 02:43:09

标签: python recursion turtle-graphics

我正在尝试使用递归来重新创建函数spiral(),该递归采用参数initLen(第一面的像素长度),N(角度连接线段)和{{1 (浮动量表示每个转弯后每个段应该多大/小一些 - 例如:mult表示每个段的长度是前一个段的一半)。当段长度小于1或大于500时,绘图应停止。

mult = 0.5所需输出的示例:

desired output

我试过这个:

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) 的节目输出是....

bad spiral

与上述不太相似......

任何提示?

2 个答案:

答案 0 :(得分:2)

您发布的示例调用(spiral( 100, 90, 0.9 ))似乎将第二个参数视为每个回合的程度,而您将其视为在代码中完成360度转弯的回合数。

将通话更改为spiral(20, 4, 0.9)或转为left(N)

答案 1 :(得分:0)

在您调用的函数中

forward(initialLength)

但是函数调用和函数其余部分中引用的变量是

initLen

所以,initialLength的值可能是静态的而不是你想要的。