Oi Alessandro,
Desculpe pela demora.
o algoritmo que vcs implementaram na solução, para gerar as permutações "na hora" é iterativo, não é?
Sim.
Ele pode até ser inspirado em um método recursiva, que pode ter sido transformado em iterativo através de simulação da pilha da recursão.
O iterador necessita guardar o contexto das váriáveis quando uma permutação foi gerada para, depois de uma nova chamada de next()
retomar a computação a partir do ponto que havia parado.