回溯法中的恢复现场,是在递归的每一步都恢复,还是在递归完成后恢复
结合代码理解的过程发现,有恢复现场的代码存在,是如何把结果打印下来的
if depth == len(data_list)+1:
print(arranges)
global total
total += 1
else:
for data in datas:
#1. 设置现场
arranges.append(data)
#2. 递归
next_datas = datas[:]
next_datas.remove(data)
search(depth+1, next_datas)
#3. 恢复现场
arranges.pop()
这里恢复现场不是把arranges.pop掉了,这样递归完成后arranges应该是空列表了把, 为什么print(arranges)的时候还能打印出来呢