I like this style of coding better... do the minimum amount of work to pass the test.  if we need to address performance or particular edge cases they should be addressed in tests - so my commits show 1 me solving the base case 2 me adding the recursion step 3 me figuring out performance