summaryrefslogtreecommitdiff
path: root/graphs/cpp/lookup_table/fibo.cc
blob: 80b72b156b6cc583dfa7de93c9f8f47912f74906 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include "fibo.hh"

long Fibo::operator()(int x)
{
    if (x <= 1)
        return x;

    std::optional<long> opt_lookup_table = lookup_table_.get(x);
    if (opt_lookup_table)
        return *opt_lookup_table;

    auto res = (*this)(x - 1) + (*this)(x - 2);
    lookup_table_.set(x, res);
    return res;
}