Здесь был задан тот же вопрос: Сложность времени для всех чисел Фибоначчи от 0 до n , но я не могу понять предоставленный ответ.
Следующий код печатает все числа Фибоначчиот 0 до п.Что такое сложность времени?
void allFib(int n){
for(int i = 0 ; i < n ; i++){
System.out.println(i + ": " + fib(i));
}
}
int fib(int n ){
if(n <= 0) return 0;
else if (n == 1) return 1;
return fib(n-1) + fib(n-2);
}
Я не понимаю, почему сложность времени составляет O (2 ^ n), а не O (n * 2 ^ n).Говорят, что:
fib (1) занимает 2 ^ 1 шагов
...
fib (n) занимает2 ^ n шагов
Я не могу понять, как это верно, поскольку fib (1) немедленно возвращает 1 на основе оператора else, поэтому он должен сделать 1 шаг.Даже если бы это утверждение было правдой, я все еще не могу понять, как сложность времени составляет всего O (2 ^ n).