递归函数:反转单词

时间:2016-10-19 22:21:57

标签: python recursion

我试图创建一个使用递归来反转字符串的简单函数。

这是我试过的:

    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:字符串索引超出范围

3 个答案:

答案 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)