Version 2: Uses recurssion