Python迷宫寻路代码路径列表a未正常重置为空问题排查
旧逻辑存在的核心错误
- 路径列表清空逻辑无效
Python中列表是可变对象,函数内执行a = []只是给当前函数栈帧里的局部变量a重新绑定了一个新的空列表对象,并不会修改上层递归传入的原始路径列表。上层递归的路径列表还是保留了原有内容,根本没有被清空,导致后续路径拼接错误。如果要清空原列表,应该调用a.clear()直接操作原列表对象,而非重新赋值。 - 路径存储仅保存引用
执行f.append(a)时,存入结果列表f的是路径列表a的内存引用,后续如果a的内容发生修改,f里已经存入的路径内容也会同步变化,无法正确保存历史路径,正确做法是存储副本:f.append(a.copy())。 - 计数器无法累计路径数
计数器c是在find_4path函数内部定义的局部变量,每次递归调用函数都会重新初始化为0,完全无法跨递归层级累计路径数量,所以每次到达终点时c的值永远是1,永远触发不了c == count的终止条件。如果要共享计数,可以将计数器改为可变对象(比如长度为1的列表)、或者用非局部变量声明。 - 到达终点后未终止当前分支逻辑
旧逻辑匹配到终点后没有添加return语句,代码会继续向下执行,将终点标记为已访问、还会尝试向四个方向拓展路径,属于无效逻辑,还会导致路径回溯错误。 - 函数无返回值不符合预期
find_4path函数没有定义任何返回值,外层find函数调用后返回的永远是None,和预期返回路径或者计数的逻辑不符。
内容的提问来源于stack exchange,提问作者Arvind Meena
相关产品推荐
相关产品推荐

