I had a lot of fun with this over the holiday season: http://adventofcode.com
It's twenty-five simple but interesting programming challenges. Day 1 is a simple "count the number of open and close parentheses in a string." Later days include "generate MD5 hashes until you find one that starts with five zeroes," "generate 50 iterations of Conway's Game of Life," "solve a Traveling Salesman problem for Santa," and even "simulate an RPG and find the best strategy for beating the boss." Each day has two parts; solve the first to unlock the second. Several of the challenges involved recursion, but in general they cover wide ground. Some people solved both parts within five minutes of each day's puzzle becoming available, but for those of us who didn't care about the leaderboard, an hour's work was usually plenty to get it done. (Students without experience would take a bit longer.) Also, the input for each day's challenge was different for each user - there were probably only a handful of possibilities, but it meant that you couldn't always just copy someone else's answers without doing the work yourself.
I think you'll find a lot of great material here. Pick a few of the days to explore with your students; teach them how a software engineer would attack the problem. Try solving it with different languages and compare how each language would do it. Demonstrate how you could optimize code to find the solution faster (especially in the "Game of Life" and "Look and Say" challenges).
Also, there was a great Reddit community that shared solutions in various languages, and lots of people put their code on GitHub. Some people played "code golf" and came up with amazingly terse solutions. I used the Advent of Code to teach myself Swift (my solutions are at https://github.com/bskendig/advent-of-code); my code was more verbose than it should have been but I usually solved each problem in fewer than 100 lines.