低级递归在代码中是如何工作的?

2024-09-30 23:31:20 发布

您现在位置:Python中文网/ 问答频道 /正文

def isPal(s):
    if len(s) <= 1:
        print(s)

    else:
         print(s)
         s[0] == s[-1] and isPal((s[1:-1]))
         print(s)
    print("HI")
x = isPal("deleveled")
print(x)

输出:

deleveled
elevele
level
eve
v
HI
eve
HI
level
HI
elevele
HI
deleveled
HI
None

Tags: andnonelenifdefhievelevel
1条回答
网友
1楼 · 发布于 2024-09-30 23:31:20

让我们把程序分解一下

首先,如果给定给isPal()的字符串是一个或零个字符,则打印它。换句话说,一旦我们不能再简化,我们就停止简化,只输出我们所拥有的

否则(当我们有两个或多个字符时),我们检查第一个字符和最后一个字符是否相等,然后对没有这两个字符的字符串执行相同的算法。如上所述,这将一直持续到有一个或零个字符为止

单词在末尾重新生成的原因是在递归函数调用后再次打印了字符串。所以在“深入”你的单词之后,你也会打印出你来自哪里

编辑:打印“HI”的原因是,在你对单词进行了“深入”之后,每次都打印“HI”。因此,每次你退出程序一步(在开始和结束时再返回一个字母),你都会打印“嗨”

我认为您的代码的问题在于,您实际上没有告诉函数用True或False回答“isPal”问题

def isPal(s):
    if len(s) <= 1:
        print(s)
        return True

    else:
         print(s)
         return (s[0] == s[-1] and isPal((s[1:-1])))
x = isPal("deleveled")
print(x)

这段代码现在将返回True或False,这取决于您的算法是否检测到字符串是回文

你的代码实际上做了你想做的,你只是没有返回你的检查结果

相关问题 更多 >