Recursive Problem Solving