我正在尝试制作一个使用递归反转字符串的简单函数。
这是我试过的:
def inverse(ch):
if ch=='' :
return ''
else:
return ch[len(ch)]+inverse(ch[1:len(ch)-1])
print inverse('hello')
这就是我得到的:
line 13, in inverse return ch[len(ch)]+inverse(ch[1:len(ch)-1]) IndexError: string index out of range
请您参考如下方法:
您正在按字符串的长度索引字符串,但请记住索引是从零开始的,因此您必须在长度减去 1 处进行切片,这是您可以安全使用的最大索引。
不过,您可以选择忽略长度,方法是使用 [-1] 索引最后一项:
def inverse(ch):
if ch=='' :
return ''
else:
return ch[-1]+inverse(ch[:-1])
print inverse('hello')
# olleh
而且您可能还想记住,使用 [::-1] 进行切片会提供与递归函数相同的结果。
