Problem link 🔗 (explaination pending) Code: C++ (unoptimized, brute-force) class Solution { public: int tribonacci(int n) { if (n == 0) return 0; if (n==1 || n==2) return 1; return tribonacci(n-1)+tribonacci(n-2)+tribonacci(n-3); } }; C++ (optimized for time) unordered_map<int,int> memo; class Solution { public: int tribonacci(int n) { if (n == 0) return 0; if (n==1 || n==2) return 1; if (memo.count(n)) return memo[n]; int prev1 = tribonacci(n-1); int prev2 = tribonacci(n-2); int prev3 = tribonacci(n-3); memo[n-1] = prev1; memo[n-2] = prev2; memo[n-3] = prev3; return prev1+prev2+prev3; } }; Big O Analysis — A GitHub | Twitter