2016-09-26 57 views
0

我需要编写一个递归方法来反转列表,不使用循环也不使用内置函数,如反转,反转::(列表分片运算符)。我是否递归地写这个?

我做得对吗?

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

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

解决您的压痕请。此外,您的代码中目前发生的事情并非如您所期望的那样工作? – idjaw

+0

以及我能够扭转列表。我只是学习递归,我想知道这是否正确写没有循环或内置函数。 – godfather97

+0

如果你把一个空的列表放入你的代码中。你认为你的代码中的变化应该是处理这种情况? – idjaw

回答

0

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

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

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

'if(len(alist)<= 1)' – tony

+2

这并没有提供问题的答案。一旦你有足够的[声誉](http://stackoverflow.com/help/whats-reputation),你将能够[评论任何职位](http://stackoverflow.com/help/privileges/comment);相反,[提供不需要提问者澄清的答案](http://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-c​​an- I-DO-代替)。 - [来自评论](/ review/low-quality-posts/13802519) – andreas

+1

@Andreas这确实提供了一个答案。你的意思是它应该有一些示例代码? – jmunsch

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])