@igoodmood

Как с помощью рекурсии удалить последний элемент списка?

Опишите, пожалуйста, ход действий. Как я понял, сначала мы должны проверить количество элементов в списке, если оно больше одно, пробегаем по всему списку до самого конца и последнему элементу присваиваем значение "None". (Если я в чем-то не прав, буду рад выслушать корректировки). Данную функцию реализую на Питоне.
def destruct_last(list):
    if len(list) == 1:
        return None
  • Вопрос задан
  • 1030 просмотров
Пригласить эксперта
Ответы на вопрос 4
sim3x
@sim3x
https://docs.python.org/3/tutorial/datastructures.html
list.pop([i])
Remove the item at the given position in the list, and return it. If no index is specified, a.pop() removes and returns the last item in the list. (The square brackets around the i in the method signature denote that the parameter is optional, not that you should type square brackets at that position. You will see this notation frequently in the Python Library Reference.)
Ответ написан
@abcd0x00
Как с помощью рекурсии удалить последний элемент списка?

Нужно передавать в каждый вызов список, текущую позицию и длину списка. То есть рекурсия должна переводить текущую позицию вперёд, пока она не станет меньше длины на единицу.
Ответ написан
Функции нужен параметр для текущей позиции со значением по умолчанию 0:
def destruct_last(lst, pos=0)
В самой функции нужна проверка, находимся ли мы на последнем элементе списка (pos == len(lst)-1).
Если находимся, то меняем значение элемента на None.
В ином случае вызываем рекурсивно функцию, передав ей тот же список и как позицию -- pos+1
Ответ написан
Комментировать
a = [1, 1, 1, 1, 1]

def destr_array(array):
	if len(array) > 1:
		array.pop(-1)
		destr_array(array)

destr_array(a)
print(a)


Предположу, что можно короче написать
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы