// By Pedro Zanetti (PzanettiD on GitHub). # include # include using namespace std; // Recursive implementation for generating the Hofstadter Q-sequence. int hof_q_recursive(int n) { if (n <= 2) { return 1; } else { return hof_q_recursive(n - hof_q_recursive(n-1)) + hof_q_recursive(n - hof_q_recursive(n-2)); } } // Bottom-up implementation for generating the Hofstadter Q-sequence. vector hof_q_bup(int n) { vector mem; mem.push_back(0); mem.push_back(1); mem.push_back(1); for (int i = 3; i < n; i++) { mem[i] = mem[i - mem[i-1]] + mem[i - mem[i-2]]; } return mem; }