fork download
  1. #include <stdio.h>
  2. #include <unordered_map>
  3.  
  4. int fib(int n)
  5. {
  6. static std::unordered_map<int, int> db;
  7. if(n < 2) return 1;
  8. if(db.count(n)) return db[n];
  9. return db[n] = fib(n - 1) + fib(n - 2);
  10. }
  11.  
  12. int main(int ac, char **av)
  13. {
  14. for(int n = 0; n < 38; ++n)
  15. printf("fib(%d) = %d\n", n, fib(n));
  16. return 0;
  17. }
Success #stdin #stdout 0.01s 5532KB
stdin
Standard input is empty
stdout
fib(0) = 1
fib(1) = 1
fib(2) = 2
fib(3) = 3
fib(4) = 5
fib(5) = 8
fib(6) = 13
fib(7) = 21
fib(8) = 34
fib(9) = 55
fib(10) = 89
fib(11) = 144
fib(12) = 233
fib(13) = 377
fib(14) = 610
fib(15) = 987
fib(16) = 1597
fib(17) = 2584
fib(18) = 4181
fib(19) = 6765
fib(20) = 10946
fib(21) = 17711
fib(22) = 28657
fib(23) = 46368
fib(24) = 75025
fib(25) = 121393
fib(26) = 196418
fib(27) = 317811
fib(28) = 514229
fib(29) = 832040
fib(30) = 1346269
fib(31) = 2178309
fib(32) = 3524578
fib(33) = 5702887
fib(34) = 9227465
fib(35) = 14930352
fib(36) = 24157817
fib(37) = 39088169