【问题标题】:Recursion: simple spiral with python turtle递归:python 龟的简单螺旋
【发布时间】:2015-06-16 02:43:09
【问题描述】:

我正在尝试使用递归重新创建函数spiral(),该函数采用参数initLen(第一边的像素长度)、N(角度连接线段)和mult(表示如何每个段应该在每转之后更大/更小 - 例如: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 ) 的程序输出是....

和上面不太相似……

有什么提示吗?

【问题讨论】:

  • 您混淆了第二个参数的含义 - 无论是旋转的度数,还是在指向最初指向的方向之前的旋转数。
  • 您应该将此作为答案重新发布,因为这是问题的根源!我显然需要重新上小学。

标签: python recursion turtle-graphics


【解决方案1】:

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

要么将呼叫更改为spiral(20, 4, 0.9),要么将呼叫更改为left(N)

【讨论】:

    【解决方案2】:

    在你调用的函数内部

    forward(initialLength)
    

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

    initLen
    

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

    【讨论】:

    • 我的错,我在发布时缩短了变量名以提高可读性,看起来我错过了一个地方。已修复 - 不幸的是,这不是问题
    • 太糟糕了,这很容易解决。我认为@user2357112 在上面的评论中得到了它
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多