Python 3.x 下回文数

Python 3.x 下回文数,python-3.x,palindrome,Python 3.x,Palindrome,我想要函数返回的最终数字,下面的代码正在运行,但没有返回正确的值,正确的值是由上面return satatement的print语句打印的,如何返回它?? 正确答案是22。但是13号太印刷了 def palindrome(num): num = num+1 num = str(num) if num[::-1]!=num: palindrome(int(num)) else: print(int(num)) return i

我想要函数返回的最终数字,下面的代码正在运行,但没有返回正确的值,正确的值是由上面return satatement的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

递归函数返回
13
,因为这是第一次调用函数的结果。由于没有在对
回文
的递归调用中保存它,因此递归中的其他迭代将丢失

您还需要将调用设置为
回文
,作为返回:

if num[::-1] != num:
    return palindrome(int(num))

看来这可以用更好的方法来做

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

虽然这打印了正确的数字,但它不返回任何内容。它将num作为已满足条件的摘要返回。不过,您的解决方案要好得多。实际上,它本质上是相同的——您刚刚在if语句中翻转了条件。但是您确实需要在
else
子句中包含
return palindrome(num+1)
,以便返回正确的值。否则,它的问题与原始post相同。没有任何解释的代码转储很少有帮助。堆栈溢出是关于学习,而不是提供盲目复制和粘贴的代码片段。请回答您的问题,并解释它如何比OP提供的更好地工作。
a = int(input("enter the no. of choices"))

for i in range(a):
    b = int(input("enter all no."))

    for j in range(b , 10000000000000000):
        count = 0
        pal = str(j)
        b += 1
        if (pal == pal[::-1]):
            print(j)
            break 
        else:
            continue