我是递归写的吗?

时间:2016-09-26 23:51:13

标签: python recursion

我需要编写一个递归方法来反转列表,不使用循环,也没有内置函数,如 reverse,reverse :: (列表) -slicing operator)。

我这样做了吗?

def reverseList(alist):
    if len(alist) == 1:
        return alist
    else:
        return reverseList(alist[1:]) + [alist[0]]

print (reverseList([1,2,3,4,5]))

2 个答案:

答案 0 :(得分:1)

是的,你做得很好。代码简短,清晰,可读,并且适当地调用自身。是的,您可以为空列表重新编码。

if len(alist) <= 1:
    return alist

另外,请尝试更多测试用例:

print (reverseList([1,2,3,4,5]))
print (reverseList([1, [False, 2.71828], ["hello", "world", "I'm", "done"], 4, 5]))
print (reverseList([])
print (reverseList([7])

答案 1 :(得分:0)

看起来它有效,除了空列表[]。您应该将其添加为基本案例。例如,正确的代码如下所示:

def reverseList(alist):
    if len(alist) <= 1:
        return alist
    else:
        return reverseList(alist[1:]) + [alist[0]]

print (reverseList([1,2,3,4,5]))