GeeksforGeeks App
Open App
Browser
Continue

# Find the value of ln(N!) using Recursion

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 ``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 ``#include ` `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

 ``

## Javascript

 ``

Output:

`1.791759`

Time Complexity: O(n)

Auxiliary Space: O(n)

My Personal Notes arrow_drop_up