Python 3.x 下回文数
我想要函数返回的最终数字,下面的代码正在运行,但没有返回正确的值,正确的值是由上面return satatement的print语句打印的,如何返回它?? 正确答案是22。但是13号太印刷了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
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