Поскольку во внутренней l oop имеется рекурсивный вызов, дерево расширения будет выглядеть следующим образом:
0
---------------------------------------------------------
1 2 .. n
------------------------ ---------------------
2 3 .. n 3 4 .. n
---------- ------------- ---------- ------------
3 4 .. n 4 5 .. n 4 5 .. n 5 6 .. n
...
В первой строке есть операции n-1
или O(n)
, во второй строке (n-1)+(n-2)+...+1 = n*(n-1)/2
или O(n^2)
операций. Аналогичным образом в третьем ряду выполняются операции O(n^3)
. Высота / глубина дерева n
. Таким образом, продолжая таким образом, будет O(n^n)
всего операций.