hola para eso debes usar un algoritmo de recursividad que es mas eficiente pero para que lo compares aca te dejo los dos ejemplos
Código:
public static int factorialrec(int x)
{
int aux;
aux=1;
if (x==0)aux=1;
else aux=aux*factorialrec(x-1);
return aux;
}
public static int factorial2(int x)
{
int i,f;
i=0;
f=1;
while (i != x)
{
i=i+1;
f=f*i;
}
return f;
}
saludos
pd/: estos tipos de algoritmos son mejor resolverlos uno mismo ya que son la base de la programacion y por lo general se dan como ejercicios cuando uno recien empieza a programar, si buscas la resolucion no te servira de nada lo mismo pasa con las torres de hanoi, saber si un numero es capicua,etc