Если учесть, сколько раз вы вызываете рекурсивную функцию, это число равно 2n-1
. Для каждого звонка у вас есть постоянное количество операций с постоянным временем (поэтому O(1)
).
Чтобы сделать вывод, сложность по времени равна O(n)
, линейной по длине списка.
Вы можете попытаться определить рекуррентное отношение, чтобы доказать это формально.
Примечание
Вопрос может быть сложным из-за операции среза, используемой на каждой итерации. Это зависит от деталей реализации (для python это выглядит как O(k)
с k
длиной списка, но для numpy это должно быть O(1)
, как указано в комментариях) и может быть легко заменено передачей индексов (например, начало, конец), а не нарезанный список.
Здесь я предполагаю, что операция занимает постоянное время .