Python 如何使用递归反转字符串?
我正在尝试一个简单的程序,它可以让我打印出“computer”的反义词。当我运行代码时,我收到一个运行时错误RuntimeError:cmp中超过了最大递归深度 我可以知道发生了什么事,我怎样才能解决它吗Python 如何使用递归反转字符串?,python,string,python-2.7,recursion,Python,String,Python 2.7,Recursion,我正在尝试一个简单的程序,它可以让我打印出“computer”的反义词。当我运行代码时,我收到一个运行时错误RuntimeError:cmp中超过了最大递归深度 我可以知道发生了什么事,我怎样才能解决它吗 def reverse(str1): if str1 == '': return str1 else: return reverse(str1[1:] + str1[0]) print reverse('retupmoc') 问题就在这里,
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
是要反转的字符串的变量名。除了编程练习之外,我假设您知道这种反转字符串的方法:'retupmoc'[::-1]
您还可以将代码还原为返回反转(str1[1:])+str1[0],如果str1不是“”
这看起来更像是一条评论,而不是答案本身。