Получение ошибки рекурсии при добавлении цифр к числу - PullRequest
0 голосов
/ 30 января 2020

Я пытаюсь взять число, проверить, если оно короче, чем четыре цифры, и добавить цифры к нему, если это так. В конце он, наконец, вернет число в степень два. Это прекрасно работает, если я добавляю только положительное целое число, но я не хочу этого, потому что все возвращаемые числа заканчиваются одним и тем же числом. Я попытался добавить немного логики c, где он берет первую и последнюю цифры числа и добавляет его к нему каждый l oop, но затем он дает мне ошибку рекурсии, потому что она превышает максимум глубина рекурсии.

def func(seed):
    length = len(str(seed))
    if length < 4:
        string = str(seed)
        seed = int(string * 2 + '1')  # the '1' can be any positive integer.
        return func(seed)

    return seed ** 2

for i in range(100):
    print(func(i))

Если я должен был заменить '1' на string[0], f'{seed - 2}' или даже не положить туда ничего, он превысит максимальную глубину рекурсии. Я не понимаю этого, и мне было интересно, что происходит, что он делает это. Спасибо.

1 Ответ

3 голосов
/ 30 января 2020

Вы сказали:

'1' может быть любым положительным целым числом или нулем.

Но это не так.

Рассмотрим если значение seed равно 0. Тогда выполнение функции приведет к 00, который снова станет равным 0 при применении функции int, что приведет к бесконечной l oop и, следовательно, к бесконечной рекурсии.

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