Измерьте время выполнения факторного метода. Correct верен ли этот алгоритм?
Я думаю, что общий алгоритм миллисекунд не является правильным... Мне нужно ваше мнение или лучший способ сделать это
Заранее спасибо
Что я уже пробовал:
/* ================================ Ява ================================== */
public static BigInteger Factorial(int n) { BigInteger bi = BigInteger.ONE; // Estructura que almacena un numero infinitamente grande y asi se evita el desbordamiento por almacemiento for (int i = n; i > 0; i--) { bi = bi.multiply(BigInteger.valueOf(i)); } return bi; } public static void main(String[] args) { // Pedimos la cantidad de veces que queremos correr el ejercicio System.out.print("Calculo Factorial --> Ingrese el numero de repeticiones \t"); Integer NroVeces = Integer.parseInt(new Scanner(System.in).nextLine()); // Pedimos el numero del cual deseamos calcular el factorial System.out.print("Calculo Factorial --> Ingrese el numero \t"); Integer Nro = Integer.parseInt(new Scanner(System.in).nextLine()); System.out.println("================================================="); for (int i = 0; i < NroVeces; i++) { // Empezamos a medir el tiempo que llevara la ejecucion de la aplicacion long HInicio = System.nanoTime(); // System.currentTimeMillis(); BigInteger Resultado = Factorial(Nro); // Invocamos a la funcion que calcula el factorial de un numero cualquiera long HFin = System.nanoTime(); // Detenemos la medicion del tiempo que llevo la ejecucion de la aplicacion System.out.println(String.format("%d!: %s",Nro, Resultado)); // Mostramos la respuesta // ¿¿¿¿ is correct ???? long Elapsed = HFin - HInicio; String ElapsedTime = String.format("%02dh: %02dmin: %02ds: %fms", TimeUnit.NANOSECONDS.toHours(Elapsed), TimeUnit.NANOSECONDS.toMinutes(Elapsed), TimeUnit.NANOSECONDS.toSeconds(Elapsed), TimeUnit.NANOSECONDS.toMillis(Elapsed)%1000.0 ); System.out.println("T.Transcurrido: "+ ElapsedTime); System.out.println("=================================================\n"); } System.out.print("Presione cualquier tecla para terminar . . . "); Scanner input= new Scanner(System.in); input.nextLine(); }