当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《如何使用递归来反转字符串?》经验,为你挑选了1个好方法。

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

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

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

print reverse('retupmoc')

thefourtheye.. 7

问题出在这里,

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

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

它应该是

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

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



1> thefourtheye..:

问题出在这里,

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

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

它应该是

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

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

推荐阅读
保佑欣疼你的芯疼
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有