fork download
  1. #include <bits/stdc++.h>
  2. #define IOS ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
  3. using namespace std;
  4. unordered_map<int, long long> fib_cache;
  5.  
  6. long long fibonacci(int n) {
  7. if (n <= 1) return 1;
  8. if (fib_cache.find(n) != fib_cache.end()) return fib_cache[n];
  9. fib_cache[n] = fibonacci(n - 1) + fibonacci(n - 2);
  10. return fib_cache[n];
  11. }
  12.  
  13. // Why naive recursion fails for n=40/50:
  14. // - Time complexity: O(2^n) - exponentially slow
  15. // - Stack overflow risk
  16. // Memoization reduces this to O(n) time and space
  17. void solve() {
  18. cout << fibonacci(10) << endl;
  19. }
  20.  
  21. int main() {
  22. IOS;
  23. solve();
  24. return 0;
  25. }
Success #stdin #stdout 0.01s 5296KB
stdin
Standard input is empty
stdout
89