recur is ever-so-slightly faster than loop+recur