我正在尝试一个简单的程序,它可以让我打印出"计算机"的反义词.当我运行我的代码时,我收到运行时错误 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
函数之外.因此,在每个递归级别上,将从字符串中删除一个字符,它最终将满足您的基本条件.
问题出在这里,
return reverse(str1[1:] + str1[0])
您将字符串的其余部分与第一个字符连接并传递给reverse
函数.因此,字符串的长度永远不会减少.
它应该是
return reverse(str1[1:]) + str1[0]
现在,您只传递字符串的其余部分,将第一个字符排除在递归reverse
函数之外.因此,在每个递归级别上,将从字符串中删除一个字符,它最终将满足您的基本条件.