, . : :
F (n) = F (n-1) + F (n-2) :
int fibonacci(n):
if (n < 2): return 1
else: return fibonacci(n-1) + fibonacci(n-2)
, , , , .
F(8) = F(7) + F(6) = [F(6) + F(5)] + [F(5) + F(4)] = ...
, , (5) . "memoize" "cache" , :
integer_map store;
int memofibo(n):
if (n < 2) : return 1
else if (store.find_key(n)): return store.find_value(n)
else:
int f = memofibo(n-1) + memofibo(n-2)
store.set(n, f)
return f
, n, n- O (n log n) ( O (log n)) "".
, , , , / ( ), + memoization . , .