fork download
  1. #include <iostream>
  2. #include <vector>
  3.  
  4. class SequenceGenerator{
  5. private:
  6. static std::vector<int> results;
  7. public:
  8. static int getNthInSequence(int n){
  9. if (results.size() == 0){
  10. results.push_back(0); // just to ignore the 0 index
  11. results.push_back(1);
  12. results.push_back(2);
  13. results.push_back(5);
  14. }
  15. if (n < results.size())
  16. return results.at(n);
  17.  
  18. int nMinus1 = getNthInSequence(n - 1);
  19. int nMinus3 = getNthInSequence(n - 3);
  20. int result = nMinus1 + nMinus1 - nMinus3;
  21. results.push_back(result);
  22. return result;
  23. }
  24. };
  25.  
  26. std::vector<int> SequenceGenerator::results;
  27.  
  28. int main() {
  29.  
  30. for (int i = 1; i <= 30; i++){
  31. std::cout << SequenceGenerator::getNthInSequence(i) << " ";
  32. }
  33.  
  34. return 0;
  35. }
Success #stdin #stdout 0s 3480KB
stdin
Standard input is empty
stdout
1 2 5 9 16 27 45 74 121 197 320 519 841 1362 2205 3569 5776 9347 15125 24474 39601 64077 103680 167759 271441 439202 710645 1149849 1860496 3010347