我正在尝试一个简单的程序,它可以让我打印出“computer”的反义词。当我运行我的代码时,我收到运行时错误 RuntimeError: maximum recursion depth exceeded in 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 - 如何使用递归反转字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34023003/