Когда вы рассматриваете сложность метода, который вызывает рекурсивный метод (метод учебника для начинающих), учитываете ли вы сложность рекурсивного метода или просто учитываете вызов метода.
Например, У меня есть небольшая программа, которая вычисляет последовательность Фибоначчи:
// Complexity: ???
public int fib() {
int n = 9;
return fib(n);
}
// Complexity: O(2^n)
private int fib(int n) {
if (n <= 1)
return n;
return fib(n-1) + fib(n-2);
}
Сложность рекурсивного метода fib(int n)
равна O(2^n)
, но я не уверен, какой будет сложность fib()
.
Я предполагаю, что это сложность 1, потому что все, что он делает, это определяет и int и возвращает число.