public class Main {
public static double potenza(double x, int n) {
if(n==0) return 1;
else if(n%2 == 0) { //Se n è pari
int k = n/2;
double p = potenza(x, k);
return p*p;
} else { //n dispari
int k = n/2; //Quoziente della divisione di n per 2
double p = potenza(x, k);
return p*p*x;
}
}
public static void stampaArray(int[] arr) {
System.out.print("{");
for(int i=0; i<arr.length; i++) {
System.out.print(arr[i]);
if(i < arr.length-1) System.out.print(", ");
}
System.out.println("}");
}
public static void scambia(int[] arr, int i, int j) {
int tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
public static void permutazioniRic(int[] arr, int n) {
if(n == arr.length-1)
stampaArray(arr);
else {
for(int i=n; i<arr.length; i++) {
scambia(arr, n, i);
permutazioniRic(arr, n+1);
scambia(arr, n, i);
}
}
}
public static void permutazioni(int[] arr) {
permutazioniRic(arr, 0);
}
public static void main(String[] args) {
//Test del metodo potenza
double x=2;
for(int i=0; i<=16; i++)
System.out.println(x+"^"+i+ " = " + potenza(x,i));
System.out.println("");
//Test del metodo permutazioni
int[] arr = {1, 2, 3};
permutazioni(arr);
}
} |