Benchmark: timing 10 iterations of direct, iterate, recurse... direct: 0 wallclock secs ( 0.24 usr + 0.01 sys = 0.25 CPU) @ 40.00/s (n=10) (warning: too few iterations for a reliable count) iterate: 8 wallclock secs ( 7.81 usr + 0.00 sys = 7.81 CPU) @ 1.28/s (n=10) recurse: 8 wallclock secs ( 7.73 usr + 0.00 sys = 7.73 CPU) @ 1.29/s (n=10) Rate iterate recurse direct iterate 1.28/s -- -1% -97% recurse 1.29/s 1% -- -97% direct 40.0/s 3024% 2992% --