2016-09-26 4 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-need-50-reputation-to-comment-what-can- я-делать-вместо этого). - [Из обзора] (/ review/low-quality-posts/13802519) – andreas

+1

@ Аndreas это дает ответ. Вы имели в виду, что у него должен быть примерный код? – 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]) 
Смежные вопросы