Я написал алгоритм для создания всех перестановок списка чисел, и кажется, что я почти на месте. Однако, как только мы вернемся к одному числу, оно зациклится навсегда. Посмотрите на мой код ниже:
def permute(nums):
if len(nums) == 0 or len(nums) == 1:
return [nums]
perms = []
for i in range(len(nums)):
prefix = nums.pop(i)
for permutation_of_suffix in self.permute(nums):
print(permutation_of_suffix)
permutation_of_suffix[:0] = [prefix]
perms.append(permutation_of_suffix)
nums.insert(i, prefix)
return perms
Как видите, я добавил оператор печати. Если бы мы запустили перестановку ([1, 2, 3]), то просто напечатали бы
[3]
[3]
[3]
навсегда. Тем не менее, я все еще новичок в области рекурсии и динамического программирования, поэтому не могу понять, что происходит не так. Очевидно, что либо один из циклов выполняется вечно, либо рекурсивный вызов выполняется бесконечно много раз.
Если кто-то может помочь, я буду очень признателен, если вы хотите, чтобы я что-то разъяснил, не стесняйтесь оставлять комментарии, и я обязательно отвечу.
Спасибо, ребята,