Dado un número N, la tarea es encontrar el valor logarítmico del factorial de N, es decir, log(N!).
Nota: ln significa log con base e.
Ejemplos:
Input: N = 2 Output: 0.693147 Input: N = 3 Output: 1.791759
Enfoque:
Método -1: Calcular n! primero, luego tome su valor de registro.
Método -2: Utilizando la propiedad de log, es decir, tomar la suma de los valores de log de n, n-1, n-2…1.
ln(n!) = ln(n*n-1*n-2*…..*2*1) = ln(n)+ln(n-1)+……+ln(2)+ln(1 )
A continuación se muestra la implementación del Método-2:
C++
// C++ implementation of the above approach #include <bits/stdc++.h> using namespace std; // Function to calculate the value double fact(int n) { if (n == 1) return 0; return fact(n - 1) + log(n); } // Driver code int main() { int N = 3; cout << fact(N) << "\n"; return 0; }
C
// C implementation of the above approach #include <math.h> #include <stdio.h> long double fact(int n) { if (n == 1) return 0; return fact(n - 1) + log(n); } // Driver code int main() { int n = 3; printf("%Lf", fact(n)); return 0; }
Java
// Java implementation of the above approach import java.util.*; import java.io.*; class logfact { public static double fact(int n) { if (n == 1) return 0; return fact(n - 1) + Math.log(n); } public static void main(String[] args) { int N = 3; System.out.println(fact(N)); } }
Python
# Python implementation of the above approach import math def fact(n): if (n == 1): return 0 else: return fact(n-1) + math.log(n) N = 3 print(fact(N))
C#
// C# implementation of the above approach using System; class GFG { public static double fact(int n) { if (n == 1) return 0; return fact(n - 1) + Math.Log(n); } // Driver code public static void Main() { int N = 3; Console.WriteLine(fact(N)); } } // This code is contributed by ihritik
PHP
<?php //PHP implementation of the above approach function fact($n) { if ($n == 1) return 0; return fact($n - 1) + log($n); } // Driver code $n = 3; echo fact($n); // This code is contributed by ihritik ?>
Javascript
<script> // Javascript implementation of the above approach // Function to calculate the value function fact(n) { if (n == 1) return 0; return fact(n - 1) + Math.log(n); } // Driver code var N = 3; document.write( fact(N).toFixed(6) + "<br>"); </script>
Producción:
1.791759
Complejidad de tiempo: O(n)
Espacio Auxiliar: O(n)