Рекурсия_Python
Изучаю Python. Объясните как довести задачу до логического завершения при помощи рекурсии.
Задача: Вычислить количество отрицательных чисел в списке [-2, 3, 8, -11, -4, 6]
def count(lst):
if len(lst) == 1:
return lst[0]
else:
return
print(count([-2, 3, 8, -11, -4, 6]))
Вот как решал: Вариант 1:
def count(lst):
if len(lst) == 1:
if lst[0] < 1:
return 1
else:
return 0
else:
if lst[0] < 1:
return 1 + count(lst[1:])
else:
return count(lst[1:])
print("n = :", count([-2, 3, 8, -11, -4, 6]))
Вариант 2:
def count(lst):
return (1 if lst[0] < 0 else 0) + count(lst[1:]) if lst else 0
print("n = :", count([-2, 3, 8, -11, -4, 6]))
Ответы (2 шт):
Автор решения: n1tr0xs
→ Ссылка
Алгоритм:
- Проверяем нулевой элемент:
Отрицательный - вернуть 1+функция(остальные элементы)
Положительный - вернуть функция(остальные элементы). - Конечным условием будет
длина массива == 0, в котором мы возвращаем0
Автор решения: Zhihar
→ Ссылка
любая рекурсия должна обладать
- условием выхода из рекурсии
- некоторым изменением входных данных
в данной задачи можно каждый раз функции передавать массив на 1 элемент меньше предыдущего
условием выхода из рекурсии должна быть проверка на пустой массив
ну а возвращать значение равное предыдущему результату + 1 или 0 в зависимости от того положительное или отрицательное число