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

标签 python string python-2.7 recursion

我正在尝试一个简单的程序,它可以让我打印出“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/

相关文章:

python - 请求 - 无法处理两个具有相同名称、不同域的 cookie

python - 使用python在终端上动画

python - Django 模型过滤空字符串

php - 在php中替换字符串的前两个字符

c++ - 填充字符串数组或 char* 数组的问题

java - 如何将二进制字符串转换为使用 UTF-8 编码的 Java 字符串

python-2.7 - 在Python中导入Seaborn模块时出错: "ImportError: cannot import name utils"

python-2.7 - Kerberos 安装后 Python Impyla 失败

Python,为基于套接字的应用程序实现代理支持(不是 urllib2)

python - 如何在不定义任何限制的情况下在 python 中获取任意数量的输入?