Given a number N, the task is to find the log value of the factorial of N i.e. log(N!).
Note: ln means log with base e.
Examples:
Input: N = 2 Output: 0.693147 Input: N = 3 Output: 1.791759
Approach:
Method -1: Calculate n! first, then take its log value.
Method -2: By using the property of log, i.e. take the sum of log values of 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)
Below is the implementation of the Method-2:
C++
// C++ implementation of the above approach#include <bits/stdc++.h>using namespace std;// Function to calculate the valuedouble fact(int n){ if (n == 1) return 0; return fact(n - 1) + log(n);}// Driver codeint 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 codeint main(){ int n = 3; printf("%Lf", fact(n)); return 0;} |
Java
// Java implementation of the above approachimport 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 approachimport mathdef fact(n): if (n == 1): return 0 else: return fact(n-1) + math.log(n)N = 3print(fact(N)) |
C#
// C# implementation of the above approachusing 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 approachfunction 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 valuefunction fact(n){ if (n == 1) return 0; return fact(n - 1) + Math.log(n);}// Driver codevar N = 3;document.write( fact(N).toFixed(6) + "<br>");</script> |
1.791759
Time Complexity: O(n)
Auxiliary Space: O(n)
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!

… [Trackback]
[…] Read More here to that Topic: geeksforgeeks.org/find-the-value-of-ln-n-using-recursion/ […]
… [Trackback]
[…] Info to that Topic: geeksforgeeks.org/find-the-value-of-ln-n-using-recursion/ […]
… [Trackback]
[…] Find More Info here to that Topic: geeksforgeeks.org/find-the-value-of-ln-n-using-recursion/ […]