Python递归函数似乎丢失了一些变量值

标签 python function variables recursion

我有 4x4 字母表,我想在那里找到所有可能的路径。它们是词语的候选者。我对变量“used”有问题,它是一个列表,其中包含路径已经存在的所有位置,因此它不会再去那里。每条路径都应该有一个使用列表。但它无法正常工作。例如,我有一个测试打印,打印当前单词和使用的列表。有时该单词只有一个字母,但路径已遍历所有 16 个单元格/索引。

大小为 8 的 for 循环适用于所有可能的方向。主函数执行追踪函数 16 次 - 每个可能的起点执行一次。 Move函数返回移动到特定方向后的索引。 is_allowed 测试是否允许移动到某个分区。 示例输入:oakaoastsniuttot。 (4x4 表格,其中前 4 个字母是第一行等) 示例输出:可以在某个单词的字典中找到的所有真实单词 就我而言,它可能会输出一两个单词,但不是几乎全部,因为它认为某些单元格已被使用,即使它们没有。

def chase(current_place, used, word):

   used.append(current_place)   #used === list of indices that have been used
   word += letter_list[current_place]
   if len(word)>=11:
       return 0
   for i in range(3,9):
       if len(word) == i and word in right_list[i-3]:  #right_list === list of all words
        print word
        break
   for i in range(8):
      if is_allowed(current_place, i) and (move(current_place, i) not in used):    
          chase(move(current_place, i), used, word)

最佳答案

问题是只有一个used列表被传递。在 chase() 中,您有两种解决此问题的选项:

  1. 制作已使用的副本并使用该副本。
  2. 在从函数返回之前,撤消在开始时完成的 append()

关于Python递归函数似乎丢失了一些变量值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14528747/

相关文章:

javascript - 如果 str1 的一部分可以重新排列为 str2,如何编写返回 true 的函数?

python - 网站是否可以拒绝 Python Selenium 脚本的访问?

python - 急切模式下的 TFP 精确 GP 回归

python - 连接类似的 pandas DataFrame 列,对它们进行排序并用 np.NaN 填充

c# - 静态变量实例和 AppDomains,发生了什么?

c中可以直接使用不带变量的文字吗?

mysql - 增强的 SQL 替换功能 - 能够处理可变部分

python - Keras:如何在已经知道图层名称的情况下获取图层索引?

javascript - 当我在表单元素上执行重置方法时,为什么我的隐藏字段没有被重置?

c++ - 使用嵌套结构将结构作为引用传递的错误