繁体   English   中英

如何使用递归来反转字符串?

[英]How to reverse a string using recursion?

我正在尝试一个简单的程序,它可以让我打印出“计算机”的反义词。 当我运行我的代码时,我收到运行时错误RuntimeError:cmp中超出了最大递归深度

我可以知道发生了什么,我该如何解决?

def reverse(str1):
    if str1 == '':
        return str1
    else:
        return reverse(str1[1:] + str1[0])

print reverse('retupmoc')

问题出在这里,

return reverse(str1[1:] + str1[0])

您将字符串的其余部分与第一个字符连接并传递给reverse函数。 因此,字符串的长度永远不会减少。

它应该是

return reverse(str1[1:]) + str1[0]

现在,您只传递字符串的其余部分,不包括第一个字符到递归reverse函数。 因此,在每个递归级别上,将从字符串中删除一个字符,它最终将满足您的基本条件。

在python中,您可以在一个简单的行中反转字符串,并完全避免递归,除非它是一个带有需求的赋值。

所以: s[::-1] ,其中s是要反转的字符串的变量名。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM