Skip navigation.
University » Corsi precedenti (it) » ASD » 2006-07 » 02/05/07 » Soluz. Potenze e Permutaz.

Soluzione Potenze e Permutazioni


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);
 
  }
 
}