Sort:  

Perhaps the hardest thing any programmer can do is to make a "program" easy to use. It's why so much time is devoted to error checking and idiot proofing. It's also why UI design is deceptively easy yet maddeningly difficult.

When I was learning C in college (but before I had learned C++), I was introduced to recursion by needing to solve the Towers of Hanoi problem: Move 4 rings from Tower A to Tower C one at a timewhile top ring stays smaller than rings under it. Without recursion, you would end up wanting to celebrate your birthday with Justin Sun.

One practical problem to solve using recursion is to find all the ways to pay for 1st class postage using 4 stamps. This is easier to bisualize conceptually, and recursion makes more sense here

Eventually the light bulb turns on regarding recursion. Once that happens, you'll want to go back to your older code and see where you can replace older code with recursive code.