Мне просто хотелось выяснить причину того, что оболочка Python не выдает ожидаемый результат для следующего рекурсивного кода:
Код: Выделить всё
def permutator(list,track):
if len(list)==1:
track.append(list[0])
print (track)
else:
for n in range(len(list)):
track.append(list[n])
return permutator(list[:n]+list[n+1:],track)
Я ожидаю, что этот сценарий напечатает все перестановки данного списка, когда переменная track инициализируется как пустой список ([]); например, я ожидал, что permutator([1,2],[]) напечатает [1,2] и [2,1]. Но он печатает только [1,2]... и это меня очень разочаровало, так как мне потребовалось много времени, чтобы прийти к идее рассматривать функцию-перестановщик как функцию двух переменных вместо одной, таким образом, что дорожка "документирует" рекурсивный процесс (последовательный итерационный процесс), пока не придет к перестановке исходного списка.
Так в чем же моя ошибка? Это фундаментально (поэтому вся идея кода неверна...), или, может быть, мне нужно сделать лишь небольшое изменение, чтобы он начал работать?
Я действительно пытался добиться успеха в решении этой проблемы самостоятельно, но сдался, поэтому любая помощь будет принята с благодарностью!