Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用递归反转字符串?_Python_String_Python 2.7_Recursion - Fatal编程技术网

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

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') 问题就在这里,

我正在尝试一个简单的程序,它可以让我打印出“computer”的反义词。当我运行代码时,我收到一个运行时错误RuntimeError: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中,您可以在一个简单的行中反转字符串,并完全避免递归,除非它是带要求的赋值


也可以这样做:
s[:-1]
,其中
s
是要反转的字符串的变量名。

除了编程练习之外,我假设您知道这种反转字符串的方法:
'retupmoc'[::-1]
您还可以将代码还原为
返回反转(str1[1:])+str1[0],如果str1不是“”
这看起来更像是一条评论,而不是答案本身。