Используйте стратегию «Разделяй и властвуй». Алгоритмы D & C являются рекурсивными алгоритмами.
Чтобы решить эту проблему с помощью D & C, есть два шага:
- Выясните базовый случай. Это должен быть простейший случай.
- Разделите или уменьшите вашу проблему, пока она не станет базовым вариантом.
Шаг 1: Определите базовый вариант. Какой самый простой список вы могли бы
получить? Если вы получите список с 0 или 1 элементом, это довольно просто подвести итог.
if len(l) == 0: #base case
return []
Шаг 2: вам нужно перемещаться ближе к пустому списку с каждым рекурсивным
звоните
recursive(l) #recursion case
например
l = [1,2,4,6]
def recursive(l):
if len(l) == 0:
return [] # base case
else:
return [l.pop()] + recursive(l) # recusrive case
print recursive(l)
>[6,4,2,1]
Источник: Алгоритмы Гроккинга