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 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> |
Output:
1.791759
Time Complexity: O(n)
Auxiliary Space: O(n)
Recommended Articles