我试图创建一个使用递归来反转字符串的简单函数。
这是我试过的:
def inverse(ch):
if ch=='' :
return ''
else:
return ch[len(ch)]+inverse(ch[1:len(ch)-1])
print inverse('hello')
这就是我得到的:
第13行,相反 return ch [len(ch)] + inverse(ch [1:len(ch)-1])IndexError:字符串索引超出范围
答案 0 :(得分:3)
您正在为字符串编制索引,但要记住索引是基于零的,因此您必须切片长度减1,这是您可以安全使用的最大索引。
然而,您可以使用[-1]
索引最后一项来选择忽略长度:
def inverse(ch):
if ch=='' :
return ''
else:
return ch[-1]+inverse(ch[:-1])
print inverse('hello')
# olleh
您也可能想要记住,使用[::-1]
进行切片会提供与递归函数相同的结果。
答案 1 :(得分:1)
检查一下:
ch[len(ch)-1]+inverse(ch[0:len(ch)-1])
答案 2 :(得分:1)
这里你真的不需要递归。
def inverse(chars):
char_list = list(chars)
char_list.reverse()
return ''.join(char_list)