[英]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.