带有数组的Python中的递归问题

时间:2018-04-12 09:55:22

标签: python python-3.x recursion

我正在开发一个递归函数。目前代码很快且很脏,但在优化之前我遇到了一个问题。

一旦递归函数调用结束(我的意思是我的算法向后),case_courante变量从堆栈弹出到前一个值,但对于数组{{1}不是这种情况}和dernier_match。我不明白为什么。

这是我的代码:

tour

1 个答案:

答案 0 :(得分:1)

因为你重新分配case_courante

case_courante = case_courante + categorie[i][tour[i]]

但您只修改tourdernier_match的元素:

dernier_match[i] = case_courante
tour[i] = tour[i] + 1

所以case_courante一直引用不同的不可变整数,但其他人总是引用他们原来的list并且从不引用任何其他内容。

<强>更新

看起来您的递归函数有两个递归调用站点(两者都相同):

choix(prof+1, case_courante, dernier_match, tour)

我最初的猜测(因为我不知道所需的功能)是传递列表的副本:

choix(prof+1, case_courante, dernier_match[:], tour[:])