recursion -> list.generate loops