Python Recursion vs. Iteration: Which to Use and When?