Эта конкретная рекурсивная проблема плохо смоделирована с использованием основной теоремы. Основная теорема хороша для рекуррентных отношений, где размер входных данных уменьшается на некоторый постоянный коэффициент при каждом рекурсивном вызове. В вашем случае это не обязательно так. Например, рассмотрите возможность выравнивания этого списка:
[[[[[[[[...[[[1]]]...]]]]]]]]]
Здесь каждый рекурсивный вызов только уменьшает размер списка на единицу, а не делится на некоторую константу. В результате вы не можете применить основную теорему здесь.
Я думаю, что вам больше повезет, анализируя эту рекурсию, если вы переосмыслите способ представления списка. Вы можете думать о своем списке как о бинарном дереве, где список представлен как цепочка узлов, перемещающихся вправо, а подсписок представлен как левое поддерево. Так, например, входные данные
[1, [2, 3], [[4]]
будут выглядеть следующим образом:
1
\
*
/ \
2 \
\ \
3 *
/
*
/
4
Ваш рекурсивный алгоритм выполняет O (1) каждый раз, когда посещает узел, плюс работу, необходимую для обработки правое поддерево (остальная часть списка) и левое поддерево (рекурсивный список, предполагая, что элемент является списком). В этом смысле вы посещаете каждый узел в двоичном дереве один раз, выполняя O (1) работы на узел, за net всего O (n) работы.