我需要编写一个递归方法来反转列表,不使用循环也不使用内置函数,如反转,反转或::(列表分片运算符)。我是否递归地写这个?
我做得对吗?
def reverseList(alist):
if len(alist) == 1:
return alist
else:
return reverseList(alist[1:]) + [alist[0]]
print (reverseList([1,2,3,4,5]))
我需要编写一个递归方法来反转列表,不使用循环也不使用内置函数,如反转,反转或::(列表分片运算符)。我是否递归地写这个?
我做得对吗?
def reverseList(alist):
if len(alist) == 1:
return alist
else:
return reverseList(alist[1:]) + [alist[0]]
print (reverseList([1,2,3,4,5]))
看起来像它的工作原理,除了空列表[]。您应该将其添加为基本案例。例如,正确的代码如下所示:
def reverseList(alist):
if len(alist) <= 1:
return alist
else:
return reverseList(alist[1:]) + [alist[0]]
print (reverseList([1,2,3,4,5]))
'if(len(alist)<= 1)' – tony
这并没有提供问题的答案。一旦你有足够的[声誉](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-can- I-DO-代替)。 - [来自评论](/ review/low-quality-posts/13802519) – andreas
@Andreas这确实提供了一个答案。你的意思是它应该有一些示例代码? – jmunsch
是的,你做得很好。代码简短,清晰,可读,并且适当地调用本身。是的,你可以重新编码这个空列表。
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])
解决您的压痕请。此外,您的代码中目前发生的事情并非如您所期望的那样工作? – idjaw
以及我能够扭转列表。我只是学习递归,我想知道这是否正确写没有循环或内置函数。 – godfather97
如果你把一个空的列表放入你的代码中。你认为你的代码中的变化应该是处理这种情况? – idjaw