【问题标题】:Writing a recursive function but getting infinite loop编写递归函数但获得无限循环
【发布时间】:2014-02-06 02:38:07
【问题描述】:

我正在使用 Python,我的任务是编写一个递归循环。这个想法是形成一个有垂直行的图片:

1st row: 1 object  (2**0)
2nd row: 2 object  ( 2**1)
3rd row: 4 obj      (2**2)
4th:     8 obj       (2**3)

以此类推,直到 n 行和 n 列。

通过使用 'stack' 和 'beside' 函数,我需要制定该模式。

我的代码是:

def fractal(Pattern, n):
    if n== 1:
        return beside( Pattern, n)
    else:
        return beside( fractal(Pattern, n-1), fractal(Pattern, n))

但是,当我想展示整体格局时,却出现了无限循环。

【问题讨论】:

  • 您一定缺少基本情况。确定无需再次调用函数即可返回的最小单位。
  • 你确定你的意思不是return beside( fractal(Pattern, n-1), fractal(Pattern, n-2)) 什么的吗?
  • fractal(Pattern, n) 在最后一行调用fractal(Pattern, n)。那是无限递归......又名inception

标签: python image loops recursion


【解决方案1】:

您在fractal(Pattern, n) 中调用fractal(Pattern, n)。它永远不会停止这样做(至少在它用完堆栈之前)。

【讨论】:

    【解决方案2】:

    else 条件中的return 的一部分是fractal(Pattern, n),与当前内部的参数完全相同。那条路永远不会到达n == 1

    不知道更多,我无法说出解决方案。只是无限递归的来源。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-06
      • 1970-01-01
      • 2016-10-06
      • 1970-01-01
      • 2021-01-16
      • 2017-03-15
      • 1970-01-01
      相关资源
      最近更新 更多