Strong chess players have vast numbers of standard patterns and plans in their long-term memory. As they play a game or analyze positions, these patterns and plans are accessed, compared, and updated. I’ve always felt that programming is similar in nature. You can add to your stock of programming patterns and plans by learning techniques such as recursion. The same applies to design patterns—a programmer simply can’t know too many of them! (For more information on this interesting subject, please see the "Additional Reading" section at the end of the article.)
Recursion is not hard to implement in the right circumstances. It’s important to make sure that the algorithm terminates, especially in cases where data corruption may occur. In other words, don’t rely on absolute correctness in the incoming data. Also, it may be important to verify that any overhead attached to recursive calls is not too high for your application.