Следующий номер палиндрома - PullRequest
0 голосов
/ 29 декабря 2018

Я хочу получить окончательное число, возвращаемое функцией, следующий код выполняется, но не возвращает правильное значение, правильное значение выводится оператором print выше насыщения возврата, как его вернуть?правильный ответ - 22. Но слишком напечатано 13.

def palindrome(num):
    num = num+1
    num = str(num)
    if num[::-1]!=num:
        palindrome(int(num))
    else:
        print(int(num))
    return int(num)

palindrome(12)

>RESULT---
22
13

Ответы [ 2 ]

0 голосов
/ 29 декабря 2018

Кажется, что это можно сделать лучше.

def palindrome(num):
    if str(num) == str(num)[::-1]:
        print(num)
        return num
    else:
        palindrome(num+1)
0 голосов
/ 29 декабря 2018

Ваша рекурсивная функция возвращает 13, потому что это результат первого вызова вашей функции.Другие итерации из вашей рекурсии будут утеряны, поскольку вы не сохраните их в своем рекурсивном вызове на palindrome.

. Вы также захотите установить свой вызов на palindrome в качестве возврата:

if num[::-1] != num:
    return palindrome(int(num))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...