Рекурсия_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. Проверяем нулевой элемент:
    Отрицательный - вернуть 1+функция(остальные элементы)
    Положительный - вернуть функция(остальные элементы).
  2. Конечным условием будет длина массива == 0, в котором мы возвращаем 0
→ Ссылка
Автор решения: Zhihar

любая рекурсия должна обладать

  1. условием выхода из рекурсии
  2. некоторым изменением входных данных

в данной задачи можно каждый раз функции передавать массив на 1 элемент меньше предыдущего

условием выхода из рекурсии должна быть проверка на пустой массив

ну а возвращать значение равное предыдущему результату + 1 или 0 в зависимости от того положительное или отрицательное число

→ Ссылка