product cartesian recursive and iterative