Como tornar esse código não recursivo

public class Permutacoes {
private static int cont = 0;
private static int[] p;

public static void permuta(int[] vet) {
    p = new int[vet.length];
    permuta(vet, 0);
}

static void permuta(int[] vet, int n) {
    if (n == vet.length) {
        cont++;
        imprime();
    } else {
        for (int i = 0; i < vet.length; i++) {

            boolean achou = false;

            for (int j = 0; j < n; j++) {

                if (p[j] == vet[i]) {
                    achou = true;
                }
            }
            if (!achou) {
                p[n] = vet[i];
                permuta(vet, n + 1);
            }
        }
    }
}

private static void imprime() {
    System.out.println();
    System.out.print("(" + cont + "):");
    for (int i = 0; i < p.length; i++) {
        System.out.print(p[i] + " ");
    }
}

}

public class JavaApplication7 {

public static void main(String[] args) {
    int v[] = {1,2,3};
    Permutacoes.permuta(v);
}