我正在尝试使用递归来重新创建函数spiral()
,该递归采用参数initLen
(第一面的像素长度),N
(角度连接线段)和{{1 (浮动量表示每个转弯后每个段应该多大/小一些 - 例如:mult
表示每个段的长度是前一个段的一半)。当段长度小于1或大于500时,绘图应停止。
mult = 0.5
所需输出的示例:
我试过这个:
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)
的节目输出是....
与上述不太相似......
任何提示?
答案 0 :(得分:2)
您发布的示例调用(spiral( 100, 90, 0.9 )
)似乎将第二个参数视为每个回合的程度,而您将其视为在代码中完成360度转弯的回合数。
将通话更改为spiral(20, 4, 0.9)
或转为left(N)
。
答案 1 :(得分:0)
在您调用的函数中
forward(initialLength)
但是函数调用和函数其余部分中引用的变量是
initLen
所以,initialLength的值可能是静态的而不是你想要的。