我试图制作一个程序,用递归函数测试一个单词是否是回文。我基本上让它起作用了,但如果第一封和最后一封是一样的话,我只是很难让它转到下一封信。
word = input("enterword")
word = word.lower()
def palindrom(word):
if len(word) == 1 or len(word) == 0:
return 0;
if word[0] == word[-1]:
print(word[0], word[-1])
palindrom(word);
else:
return 1;
test = palindrom(word)
if test == 0:
print("Yes")
elif test == 1:
print("No")所以现在它测试第一个字母和最后一个字母是否相同,如果是的话,应该再次运行这个函数。我只需要检查一下word1和word-2,但我遇到了一些麻烦。我试着拆分单词,只是弹出字母,但它一直把列表看作是1的长度。所以,如果有办法让它得到整个拆分列表的长度,那也同样有效。
发布于 2015-03-16 20:31:24
当您递归地调用您的方法并调用正确的片段时,您只是缺少了返回语句:
def palindrom(word):
if len(word) == 1 or len(word) == 0:
return 0
if word[0] == word[-1]:
print(word[0], word[-1])
return palindrom(word[1:-1])
else:
return 1发布于 2015-03-16 20:37:58
您缺少返回语句,还需要在每个递归上传递减少的单词palindrom(word[1:-1])。
word = "viooiv"
word = word.lower()
def palindrom(word):
if len(word) == 1 or len(word) == 0:
return 0
if word[0] == word[-1]:
print(word[0], word[-1])
return palindrom(word[1:-1])
else:
return 1
test = palindrom(word)
if test == 0:
print("Yes")
elif test == 1:
print("No"输出:
('v', 'v')
('i', 'i')
('o', 'o')
Yes发布于 2015-03-16 20:43:50
尝试使用以下函数调用单词上的回文:
def palindrome(word, i = 0):
if i == len(word):
return word[0] == word[-1]
if word[i] == word[-i - 1]:
return palindrome(word, i + 1)
else:
return Falsehttps://stackoverflow.com/questions/29086278
复制相似问题