recursive-and-loop