java

Factorial recursivo e iterativo en Java

Hoy veremos dos formas de calcular el factorial en Java. La primera utiliza un ciclo while para obtener el factorial de un número, y la segunda utiliza recursividad o recursión.

Factorial con recursión y ciclo while en Java

Esas dos maneras para sacar el factorial las pondremos en unas funciones separadas que recibirán un dato de tipo long y devolverán igualmente un long.

Algoritmo para calcular factorial en Java

Para calcular el factorial en Java se declara una variable que será el resultado; después se hace un ciclo en donde se va restando 1 al número del que se sacará el factorial y en cada iteración se multiplica el factorial por el número.

El ciclo se rompe cuando el número deja de ser mayor que 1. Lo mismo pasa en la recursividad.

En ambas funciones se comprueba si es menor o igual que cero y en caso de que sí, se devuelve 1. Esto viene por una ley matemática que no explicaré ahora, basta con saberlo.

Factorial iterativo o con ciclos en Java

Veamos el enfoque que usa un ciclo while. Como lo dije en el algoritmo, el ciclo se rompe cuando el número deje de ser mayor a 1. La función queda así:

/**
  Factorial iterativo con ciclo while
  en Java

  @author parzibyte
 */ public static long factorial(long numero) {
  if (numero < 0)
   numero = numero * -1;
  if (numero <= 0)
   return 1;
  long factorial = 1;
  while (numero > 1) {
   factorial = factorial * numero;
   numero--;
  }
  return factorial;
 }

Se hace el ciclo, algunas comprobaciones y al final se devuelve el factorial. Todo esto en una función que se puede llamar desde cualquier lugar.

Factorial recursivo en Java

Para sacar el factorial de un número en Java usando recursión (cuando la función se llama a sí misma) se llama a la función con el número que se recibe pero restándole 1. Es decir, se multiplica el actual por lo que regresa la función pero se le pasa el número -1.

La manera en la que se rompe la recursividad es cuando el número es menor o igual a 1, pues se regresa 1.

El código queda así:

/**
  Factorial calculado con recursión
  en Java

  @author parzibyte
 */ public static long factorialRecursivo(long numero) {
  if (numero <= 1)
   return 1;
  return numero * factorialRecursivo(numero - 1);
 }

Probar algoritmos y funciones para calcular el factorial

Podemos implementar el siguiente código en el método main de Java:

class Main {
 public static void main(String[] args) {
  for(long i = 0; i < 20; i++){
   System.out.println(String.format("Calculando factorial de %d. Iterativo: %d | Recursivo: %d", i, factorial(i), factorialRecursivo(i)));
  }
 }
}

Ese código va a imprimir el factorial del 0 al 19 usando un ciclo. De esta manera veremos si calculamos bien el factorial tanto de manera recursiva como de manera iterativa o con ciclos.

¿Quieres aprender más sobre Java? haz click aquí. También puedes ver más algoritmos.

Estoy aquí para ayudarte 🤝💻


Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto

No te pierdas ninguno de mis posts 🚀🔔

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.
parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

Entradas recientes

Cancelar trabajo de impresión con C++

En este post te quiero compartir un código de C++ para listar y cancelar trabajos…

4 semanas hace

Copiar bytes de Golang a JavaScript con WebAssembly

Gracias a WebAssembly podemos ejecutar código de otros lenguajes de programación desde el navegador web…

2 meses hace

Imprimir PDF con Ghostscript en Windows de manera programada

Revisando y buscando maneras de imprimir un PDF desde la línea de comandos me encontré…

2 meses hace

Hacer pruebas en impresora térmica Bluetooth Android

Esta semana estuve recreando la API del plugin para impresoras térmicas en Android (HTTP a…

2 meses hace

Limpiar clave PEM

Hoy te enseñaré a extraer la cadena base64 de una clave PEM usando una función…

2 meses hace

Foco con Telegram, apagador de 3 vías, relevador y ESP8266

Encender un foco con un Bot de Telegram es posible usando una tarjeta como la…

2 meses hace

Esta web usa cookies.