Предположим, что 3-й строки нет, и вычислим f (3):
f(3) = f(2) + f(1)
f(1) = 1
f(2) = f(1) + f(0)
f(0) = 0
f(1) = 1
Требуется 3 вызова, чтобы вычислить f (2) сейчас. Если была третья линия, то это будет сделано за 1 звонок.
Сложность этого алгоритма (без 3-й строки) составляет O(2^n)
. Когда вы добавляете строку 3, которая содержит явное решение для случая, когда n = 2
, сложность становится O(2^(n-1))
, что равно (1/2) * O(2^n)
= kO(2^n)
, где koefficient k = 0,5. Если вы добавите явное решение для случая, когда n = 3, тогда вы получите k = 0,25 и так далее. Когда вы добавите p
явные решения, сложность будет:
1
O (--- * 2^n)
2^p
Это означает, что если вы вычислите ответ для n от 1 до n и сохраните все вычисленные решения, то вы получите p = n - 1
и алгоритм для каждого из n
шагов, а сложность будет 2*O(n)
.