Recursion, backtracking, and dynamic programming | Zoonk