我需要编写一个递归方法来反转列表,不使用循环,也没有内置函数,如 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]))
答案 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]))