2024-09-30 23:31:20 发布
网友
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
让我们把程序分解一下
首先,如果给定给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,这取决于您的算法是否检测到字符串是回文
你的代码实际上做了你想做的,你只是没有返回你的检查结果
让我们把程序分解一下
首先,如果给定给isPal()的字符串是一个或零个字符,则打印它。换句话说,一旦我们不能再简化,我们就停止简化,只输出我们所拥有的
否则(当我们有两个或多个字符时),我们检查第一个字符和最后一个字符是否相等,然后对没有这两个字符的字符串执行相同的算法。如上所述,这将一直持续到有一个或零个字符为止
单词在末尾重新生成的原因是在递归函数调用后再次打印了字符串。所以在“深入”你的单词之后,你也会打印出你来自哪里
编辑:打印“HI”的原因是,在你对单词进行了“深入”之后,每次都打印“HI”。因此,每次你退出程序一步(在开始和结束时再返回一个字母),你都会打印“嗨”
我认为您的代码的问题在于,您实际上没有告诉函数用True或False回答“isPal”问题
这段代码现在将返回True或False,这取决于您的算法是否检测到字符串是回文
你的代码实际上做了你想做的,你只是没有返回你的检查结果
相关问题 更多 >
编程相关推荐