首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >巨蟒。创建一个函数,递归地测试一个单词是否是回文。

巨蟒。创建一个函数,递归地测试一个单词是否是回文。
EN

Stack Overflow用户
提问于 2015-03-16 20:23:19
回答 4查看 296关注 0票数 2

我试图制作一个程序,用递归函数测试一个单词是否是回文。我基本上让它起作用了,但如果第一封和最后一封是一样的话,我只是很难让它转到下一封信。

代码语言:javascript
复制
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的长度。所以,如果有办法让它得到整个拆分列表的长度,那也同样有效。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-03-16 20:31:24

当您递归地调用您的方法并调用正确的片段时,您只是缺少了返回语句:

代码语言:javascript
复制
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
票数 4
EN

Stack Overflow用户

发布于 2015-03-16 20:37:58

您缺少返回语句,还需要在每个递归上传递减少的单词palindrom(word[1:-1])

代码语言:javascript
复制
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"

输出:

代码语言:javascript
复制
 ('v', 'v')
 ('i', 'i')
 ('o', 'o')
 Yes
票数 0
EN

Stack Overflow用户

发布于 2015-03-16 20:43:50

尝试使用以下函数调用单词上的回文:

代码语言:javascript
复制
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 False
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29086278

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档