they are never really necessary and not encouraged in Python): 1. Learning to think, not learning to program. Recursive definitions are great tools for thinking. 2. Learning to program, not learning to Python. Ways to describe computations, not just what works best in Python. 3. Even in Python, more complex programs that operate on recursive data are best as recursive functions.