[英]Recursion Function Isn't Working
好的,所以我正在尝试创建一个递归函数,如果函数是回文则返回 True,否则返回 False。 然而,它并没有走到最后,而是随机停止。
代码:
def is_palindrome(word):
if len(word) == 1 or len(word) == 0:
return True
else:
lst = len(word) - 1
if word[0] == word[lst]:
print(len(word), " --> ", word)
print(word[0], " # ", word[lst])
is_palindrome(word[0+1:lst])
else:
return False
对于我的生活,我无法弄清楚为什么。 这是一个示例输出:
7 --> racecar
r # r
5 --> aceca
a # a
3 --> cec
c # c
^ It stops right here. Why doesn't it continue and return True when length = 1?
您需要将您的调用返回到递归函数:
def is_palindrome(word):
if len(word) == 1 or len(word) == 0:
return True
else:
lst = len(word) - 1
if word[0] == word[lst]:
print(len(word), " --> ", word)
print(word[0], " # ", word[lst])
return is_palindrome(word[0+1:lst]) # change here
else:
return False
您的代码似乎在递归的最后一步停止的原因是,在这种情况下,您实际上从未返回过任何值。 在某些编程语言(例如C或Java)中,此类代码甚至无法编译。 Python似乎可以容忍它,尽管它会导致您当前的行为。
您的功能太长。 我更喜欢使用string[::-1]
def is_palindrome(word): return word == word[::-1]
您正在调用该函数,但不返回它。 我认为您需要返回函数调用
编辑,我想蒂姆知道了!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.