Сохранение результатов рекурсивной функции в виде массива в Python - PullRequest
0 голосов
/ 04 октября 2019

Я ищу рекурсивные функции (не из библиотек) для создания перестановок с повторениями, и я нашел некоторый код, который, как мне кажется, я понимаю. Я хотел бы сделать еще один шаг и попытаться сохранить его как массив Numpy, но я не могу понять, куда "возвращаться", чтобы сохранить перестановки в массиве. Пожалуйста, сообщите.

def _permutation_repeat(text, prefix, n, k):
    if k == 0: 
        print(prefix)
        return

    for i in range(n):
        new_prefix = prefix + text[i] 
        _permutation_repeat(text, new_prefix, n, k-1)


def permutation_repeat(text, k):
    _permutation_repeat(text, "", len(text), k)


permutation_repeat("ABCD", 2)

Код от: https://code.luasoftware.com/tutorials/coding-interview/permutations-with-repeating-characters/

1 Ответ

1 голос
/ 04 октября 2019

Вы можете попробовать:

def _permutation_repeat(text, prefix, n, k):
    if k == 0: 
        print(prefix)
        return np.array([prefix])

    arr = np.array([])

    for i in range(n):
        new_prefix = prefix + text[i] 
        new_arr = _permutation_repeat(text, new_prefix, n, k-1)
        arr = np.concatenate([arr, new_arr])

    return arr

def permutation_repeat(text, k):
    return _permutation_repeat(text, "", len(text), k)


permutation_repeat("ABCD", 2)
...