Итак, используя модуль итулс, я могу кодировать действительно гладкий код для создания всех перестановок с заменой, но то, что я хотел сделать, было чем -то с использованием рекурсии. < /p>
Вот что я придумал: < /p>
def permutations_with_replacement(n,k,permutations):
m = 0
if k < 1:
return permutations
for i in range(27):
permutations.append(m % n)
if (i % n**(k-1)) == n**(k-1) - 1:
m = m + 1
return permutations_with_replacement(n,k-1,permutations)
n = 3
k = 3
permutations = [[] for i in range(n**k)]
print permutations_with_replacement(n,k,permutations)
< /code>
В основном он закладывает первый слой (вход) каждой перестановки, а затем при каждой последующей итерации он проходит через 0 ... n-1 быстрее и быстрее, чтобы получить все комбинации. Я подал пример с n = k = 3, так как я должен инициализировать список перестановок, и инициализация его внутри функции заставляет вещи облагаться при рекурсии. Я также поместил 27 для диапазона, а не n^k, так как N^k также будет облажаться после рекурсии. Как это можно было сделать, чтобы работать чисто? Так что, если кто -то сможет показать мне, как это сделать так, это было бы здорово, спасибо.
Подробнее здесь: https://stackoverflow.com/questions/212 ... -in-python
Алгоритм рекурсивной функции для перестановки с заменой в Python ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение