Алгоритм Капрекара в python: проблема с добавлением в рекурсивной функции - PullRequest
0 голосов
/ 07 мая 2020

Я пытаюсь рекурсивно реализовать алгоритм Капрекара следующим образом:

def soustraction_de_Kaprekar(N):
    s = str(N)
    l = list(set(s))
    l.sort()
    r1 = l.copy()
    l.reverse()
    r2 = l
    r1 = int(''.join(r1))
    r2 = int(''.join(r2))
    return max(r1,r2)-min(r1,r2)

def Kaprekar(N, kaplist = None):

    if kaplist == None:
        kaplist = []
        kaplist.append(N)

    if N == 6174:
        return kaplist
    else:
        N = soustraction_de_Kaprekar(N)
        #print(type(N), N)
        kaplist.append(N)

        return kaprekar(N, kaplist)

Составление первой функции:

print(soustraction_de_Kaprekar(2143))
print(soustraction_de_Kaprekar(soustraction_de_Kaprekar(2143)))
print(soustraction_de_Kaprekar(soustraction_de_Kaprekar(soustraction_de_Kaprekar(2143))))

дает константу Капрекара:

3087
8352
6174

Что-то пошло не так с рекурсивной функцией при попытке сохранить промежуточный номер в списке:

Kaprekar(2143)

дает

8352
[2143, 3087, 8352]
6174
[8352, 6174]

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...