Somos conscientes de calcular factoriales usando bucles o recursión, pero si nos piden calcular factoriales sin usar ningún bucle o recursión. Sí, esto es posible a través de un conocido algoritmo de aproximación conocido como aproximación de Stirling .
Ejemplos:
Input : n = 6 Output : 720 Input : n = 2 Output : 2
Aproximación de Stirling: es una aproximación para el cálculo de factoriales. También es útil para aproximar el logaritmo de un factorial.
¡norte! ~ sqrt(2*pi*n) * pow((n/e), n)
Nota: Esta fórmula no dará el valor exacto del factorial porque es solo la aproximación del factorial.
C++
// CPP program for calculating factorial // of a number using Stirling // Approximation #include<bits/stdc++.h> using namespace std; // function for calculating factorial long int stirlingFactorial(int n) { if (n == 1) return 1; long int z; float e = 2.71; // value of natural e // evaluating factorial using // stirling approximation z = sqrt(2*3.14*n) * pow((n/e), n); return z; } // driver program int main() { cout << stirlingFactorial(1) << endl; cout << stirlingFactorial(2) << endl; cout << stirlingFactorial(3) << endl; cout << stirlingFactorial(4) << endl; cout << stirlingFactorial(5) << endl; cout << stirlingFactorial(6) << endl; cout << stirlingFactorial(7) << endl; return 0; }
Java
// Java program for calculating // factorial of a number using // Stirling Approximation class GFG { // function for // calculating factorial public static int stirlingFactorial(double n) { if (n == 1) return 1; double z; double e = 2.71; // value of natural e // evaluating factorial using // stirling approximation z = Math.sqrt(2 * 3.14 * n) * Math.pow((n / e), n); return (int)(z); } // Driver Code public static void main(String[] args) { System.out.println(stirlingFactorial(1)); System.out.println(stirlingFactorial(2)); System.out.println(stirlingFactorial(3)); System.out.println(stirlingFactorial(4)); System.out.println(stirlingFactorial(5)); System.out.println(stirlingFactorial(6)); System.out.println(stirlingFactorial(7)); } } // This code is contributed by mits.
Python3
# Python3 program for calculating # factorial of a number using # Stirling Approximation import math # Function for calculating factorial def stirlingFactorial(n): if (n == 1): return 1 # value of natural e e = 2.71 # evaluating factorial using # stirling approximation z = (math.sqrt(2 * 3.14 * n) * math.pow((n / e), n)) return math.floor(z) # Driver Code print(stirlingFactorial(1)) print(stirlingFactorial(2)) print(stirlingFactorial(3)) print(stirlingFactorial(4)) print(stirlingFactorial(5)) print(stirlingFactorial(6)) print(stirlingFactorial(7)) # This code is contributed by mits
C#
// C# program for calculating // factorial of a number using // Stirling Approximation class GFG { // function for // calculating factorial public static int stirlingFactorial(double n) { if (n == 1) return 1; double z; double e = 2.71; // value of natural e // evaluating factorial using // stirling approximation z = System.Math.Sqrt(2 * 3.14 * n) * System.Math.Pow((n / e), n); return (int)(z); } // Driver Code public static void Main() { System.Console.WriteLine(stirlingFactorial(1)); System.Console.WriteLine(stirlingFactorial(2)); System.Console.WriteLine(stirlingFactorial(3)); System.Console.WriteLine(stirlingFactorial(4)); System.Console.WriteLine(stirlingFactorial(5)); System.Console.WriteLine(stirlingFactorial(6)); System.Console.WriteLine(stirlingFactorial(7)); } } // This code is contributed by mits.
PHP
<?php // PHP program for calculating factorial // of a number using Stirling // Approximation // Function for calculating factorial function stirlingFactorial($n) { if ($n == 1) return 1; $z; // value of natural e $e = 2.71; // evaluating factorial using // stirling approximation $z = sqrt(2 * 3.14 * $n) * pow(($n / $e), $n); return floor($z); } // Driver Code echo stirlingFactorial(1),"\n"; echo stirlingFactorial(2) ,"\n"; echo stirlingFactorial(3) ,"\n"; echo stirlingFactorial(4), "\n" ; echo stirlingFactorial(5) ,"\n"; echo stirlingFactorial(6) ," \n"; echo stirlingFactorial(7) ," \n"; // This code is contributed by anuj_67. ?>
Javascript
<script> // Javascript program for calculating factorial // of a number using Stirling // Approximation // Function for calculating factorial function stirlingFactorial(n) { if (n == 1) return 1; let z; // value of natural e let e = 2.71; // evaluating factorial using // stirling approximation z = Math.sqrt(2 * 3.14 * n) * Math.pow((n / e), n); return Math.floor(z); } // Driver Code document.write( stirlingFactorial(1) + "<br>"); document.write( stirlingFactorial(2) + "<br>"); document.write( stirlingFactorial(3) + "<br>"); document.write( stirlingFactorial(4) + "<br>"); document.write( stirlingFactorial(5) + "<br>"); document.write( stirlingFactorial(6) + "<br>"); document.write( stirlingFactorial(7) + "<br>"); // This code is contributed by _saurabh_jaiswal. </script>
Producción:
1 1 5 23 119 723 5086
Este artículo es una contribución de Shivam Pradhan (anuj_charm) . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo usando contribuya.geeksforgeeks.org o envíe su artículo por correo a contribuya@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA