У меня возникли проблемы, решая эту задачу:Напишите рекурсивную функцию, которая вводит положительное целое число n и выводит все перестановки {1, 2,. , , , П}
Напишите рекурсивную функцию, которая вводит положительное целое число п и выходов все п! перестановки {1, 2,. , , , n}. Не используйте никакие команды перестановки Sage. Используйте список для хранения значений и работы с этим списком.
Пример ввода: 3
Ожидаемый результат: (1,2,3), (1,3,2), (2,3,1),(2,1,3), (3,1,2), (3,2,1)
Все вещи, которые я нашел в Интернете генерирует перестановку список не для целого.
Я думал о вычислении моего факториала, помогая определить мою выходную длину. Я не мог понять, как это сделать. Пожалуйста, помогите мне! Спасибо !
Я попытался это
def per(n):
a = []
for i in range(n):
for j in range(n-i):
a.append((i, j, n-i-j-1))
return a
per(3)
[(0, 0, 2), (0, 1, 1), (0, 2, 0), (1, 0, 1), (1 , 1, 0), (2, 0, 0)]
Эта функция не рекурсивный ... – ForceBru
не могли бы вы помочь мне! Я долгое время пытался, но я не мог понять! Спасибо ! – ADAM
На самом деле вам нужно вернуть комбинации «list (range (1, n + 1))». Это можно сделать с помощью 'itertools.permutations (range (1, n + 1), n)'. Итак, вы можете взглянуть на [документы] (https://docs.python.org/3/library/itertools.html#itertools.permutations) для возможной реализации этого алгоритма. – ForceBru