【发布时间】:2013-12-11 01:13:07
【问题描述】:
我正在编写 Python 代码,我必须在其中使用递归测试列表是否是回文,并且遇到了我的代码的混淆和问题:
def isPalindrome( thesublist ) :
thesublisttest = thesublist[0:]
if len(thesublisttest) <= 1:
return True
elif len(thesublisttest) == 2:
x = thesublisttest[0]
y = thesublisttest[1]
if x == y:
return True
else:
return false == thesublisttest.pop(0)
elif len(thesublisttest) > 2:
first = thesublisttest.pop(0)
last = thesublisttest.pop()
if first == last:
return isPalindrome(thesublisttest)
else:
return False
def maxPalindrome( thelist ) :
completelist=thelist[:]
completelist.reverse()
complete=len(thelist)-1
for i in range(complete):
if completelist[:]==thelist[:]:
x=len(thelist)
y=0
return(x,y)
elif completelist[i:complete]==thelist[i:complete]:
successlist=thelist[i:complete]
a=i
b=len(thelist)-a
return (a,b)
thelisttest = thelist[0:]
if thelisttest:
return (0,0)
# test
candidatePs = [
[1,],
range(8),
range(4)+range(3,-1,-1),
range(4)+[0]+range(3,-1,-1),
range(3)+range(4)+[0]+range(3,-1,-1),
[8,3,2,3],
]
for p in candidatePs :
print p, isPalindrome( p )
print p, "max", maxPalindrome( p )
我不确定我所做的是否被认为是递归,我也知道 [8,3,2,3] 应该显示 max(3,1) 并且我的代码将它吐出为 max (0,0) 我的代码中的任何帮助都会有很大帮助。
【问题讨论】:
-
重复问题不使用递归来检查它是否是回文,但它仍然产生正确的输出。
标签: python recursion palindrome