cod*_*nob 4 python string recursion
我的任务是定义一个过程is_palindrome,它接受一个字符串作为输入,并返回一个布尔值,指示输入字符串是否是回文.在这种情况下,单个字母应该返回True,就像空字符串一样''.
不幸的是,我没有得到预期的结果.我很感激帮助.
我的代码版本1:
def is_palindrome(s):
if s == '':
return True
else:
if (ord(s[0]) - ord(s[len(s)-1])) == 0:
is_palindrome(s[1:len(s)-1])
else:
return False
print is_palindrome('')
#>>> True (expected = True)
print is_palindrome('abab')
#>>> False (expected = False)
print is_palindrome('abba')
#>>> None (expected = True)
print is_palindrome('andrea')
#>>> None (expected = False)
print is_palindrome('abaaba')
#>>> None (expected = True)
Run Code Online (Sandbox Code Playgroud)
我通过调试器跟踪我的代码,似乎逻辑是正确的,因为代码采用了适当的路径.但是,如上所述,某些案例的最终结果似乎会转为"无".
如果我将代码更改为以下内容:
我的代码版本2:
def is_palindrome(s):
if s == '':
result = True
else:
if (ord(s[0]) - ord(s[len(s)-1])) == 0:
is_palindrome(s[1:len(s)-1])
else:
result = False
return result
print is_palindrome('')
#>>> True (expected = True)
print is_palindrome('abab')
#>>> False (expected = False)
print is_palindrome('abba')
#>>> Error (expected = True)
UnboundLocalError: local variable 'result' referenced before assignment
print is_palindrome('andrea')
#>>> Error (expected = False)
UnboundLocalError: local variable 'result' referenced before assignment
print is_palindrome('abaaba')
#>>> Error (expected = True)
UnboundLocalError: local variable 'result' referenced before assignment
Run Code Online (Sandbox Code Playgroud)
在您的第一个示例中,您忘记了一个return语句:
def is_palindrome(s):
if s == '':
return True
else:
if (ord(s[0]) - ord(s[len(s)-1])) == 0:
# v-- forgot this here
return is_palindrome(s[1:len(s)-1])
else:
return False
Run Code Online (Sandbox Code Playgroud)