Ho creato un algoritmo che dovrebbe generare tutte le possibili permutazioni , o meglio genera la permutazione relativa a un dato intero (poi dal codice vedrete che non si tratta di intero ma per lavorare in range più ampi mi appoggio ai BigInteger) passatogli come parametro.
Il problema è che non vengono veramente generate tutte le possibili permutazioni , c'è qualcosa che non va a dovere ma non capisco cosa..innanzitutto vi posto il codice del relativo metodo:

codice:
public static String getPermutazione (char [] caratteri , BigInteger bi) {
	int sistema = caratteri.length;
	BigInteger bs = new BigInteger (sistema + "");
	int potenza = 0;
	sb = new StringBuilder ();
	int resto;
	BigInteger temp = bi;
	while ((temp = bi.divide (bs.pow (potenza))).compareTo (BigInteger.ZERO) > 0) {
		resto = temp.mod (bs).intValue ();
		sb.append (caratteri [resto]);
		potenza++;
	}
	return sb.reverse ().toString ();
}
Ma avviandolo , ad esempio così:

codice:
char [] c = "0123456789".toCharArray ();
BigInteger bic = BigInteger.ZERO;
while (true) {
	System.out.println (getPermutazione (c , bic));
	bic = bic.add (BigInteger.ONE);
	Thread.sleep (100);
}
Senza aspettare neanche troppo tempo noto che mancano delle permutazioni:
manca 0 , manca tutta la serie 00 01 .. 09 , manca 000 001 ... 099
insomma mancano quelli in cui il primo carattere della permutazione sia il primo carattere dell'array passato come parametro al metodo..
Ora chiedo a voi , mi aiutate a capire dove sta l'errore?O meglio , penso di sapere dove sta l'errore ma come lo risolvo?