Вопрос о попытке распечатать все перестановки данного спискаPython

Программы на Python
Ответить
Anonymous
 Вопрос о попытке распечатать все перестановки данного списка

Сообщение Anonymous »

Мне просто хотелось выяснить причину того, что оболочка 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]... и это меня очень разочаровало, так как мне потребовалось много времени, чтобы прийти к идее рассматривать функцию-перестановщик как функцию двух переменных вместо одной, таким образом, что дорожка "документирует" рекурсивный процесс (последовательный итерационный процесс), пока не придет к перестановке исходного списка.
Так в чем же моя ошибка? Это фундаментально (поэтому вся идея кода неверна...), или, может быть, мне нужно сделать лишь небольшое изменение, чтобы он начал работать?
Я действительно пытался добиться успеха в решении этой проблемы самостоятельно, но сдался, поэтому любая помощь будет принята с благодарностью!
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»