首页 > 解决方案 > 我是 Python 新手。而且这个递归程序往往因为一些我无法弄清楚的奇怪原因而无法运行。任何帮助将不胜感激

问题描述

这个程序应该接受一个数字并找到它的反面。如果该数字是回文,它会打印该数字。如果数字不是回文,则将数字添加到其反面,然后再次检查回文。这种情况不断发生,这也表明最终结果应该是回文。这是代码:

num = int(input("Enter a number: "))
def palindromeConverter(n):
    m = n
    rev = 0
    while(n>0):
        rev = (rev*10) + (n%10)
        n = n/10
    if(rev==m):
        return rev
    else:
        return palindromeConverter(rev+m)
print(palindromeConverter(num))

标签: pythonpython-3.xrecursion

解决方案


如果您打印n,您将看到您的脚本无限运行。while 循环永远不会结束

while(n>0):
    rev = (rev*10) + (n%10)
    n = n/10
    print(n)

编辑:

在我搜索了一些示例之后,我认为您的n = n/10划分是错误的。应该是楼层划分n = n//10

如果你像这样改变它,它工作得很好:

num = int(input("Enter a number: "))
def palindromeConverter(n):
    m = n
    rev = 0
    while(n>0):
        rev = (rev*10) + (n%10)
        n = n//10
    if(rev==m):
        return rev
    else:
        return palindromeConverter(rev+m)
print(palindromeConverter(num))

推荐阅读