我刚刚开始探索编程的奇妙之处。我正在尝试编写代码来识别数字回文。只看数字而不是文本。我正在尝试在这里学习使用递归。但我只是没有得到任何地方,我无法弄清楚它有什么问题。
我的想法是检查第一个字符串和最后一个字符串,如果匹配则删除这两个字符串,然后重复。最终什么都没有(暗示它是一个回文)或者会有一对不匹配(暗示相反)。
我知道有更好的代码可以在其中找到回文,但我只是想尝试一下递归。
那怎么了?
def f(n):
global li
li=list(str(n))
if (len(li)==(1 or 0)):
return True
elif li[len(li)-1]==li[0]:
del li[0]
del li[len(li)-1]
if len(li)==0:
return True
if len(li)>0:
global x
x=''.join(li)
str(x)
f(x)
else:
return False
提前致谢!
一些评论
- 为什么
x
和 li
是全局的?在递归中,所有变量都应该是局部的。
- 为什么要在
str
和 list
之间来回转换?可以下标both of them
- 您需要返回递归调用的结果:
return f(x)
尝试这些建议,看看效果如何。
我是一名优秀的程序员,十分优秀!