 GFG App
Open App Browser
Continue

# Iterated Logarithm log*(n)

Iterated Logarithm or Log*(n) is the number of times the logarithm function must be iteratively applied before the result is less than or equal to 1. Applications: It is used in the analysis of algorithms (Refer Wiki for details)

## C++

 // Recursive CPP program to find value of // Iterated Logarithm #include  using namespace std;   int _log(double x, double base) {     return (int)(log(x) / log(base)); }   double recursiveLogStar(double n, double b) {     if (n > 1.0)         return 1.0 + recursiveLogStar(_log(n, b), b);     else         return 0; }   // Driver code int main() {     int n = 100, base = 5;     cout << "Log*(" << n << ") = "          << recursiveLogStar(n, base) << "\n";     return 0; }

## Java

 // Recursive Java program to  // find value of Iterated Logarithm import java.io.*;   class GFG { static int _log(double x,                  double base) {     return (int)(Math.log(x) /                   Math.log(base)); }   static double recursiveLogStar(double n,                                 double b) {     if (n > 1.0)         return 1.0 +                 recursiveLogStar(_log(n,                                   b), b);     else         return 0; }   // Driver code public static void main (String[] args)  {     int n = 100, base = 5;     System.out.println("Log*(" + n + ") = " +                   recursiveLogStar(n, base)); } }   // This code is contributed by jit_t

## Python3

 # Recursive Python3 program to find value of # Iterated Logarithm import math   def _log(x, base):       return (int)(math.log(x) / math.log(base))   def recursiveLogStar(n, b):       if(n > 1.0):         return 1.0 + recursiveLogStar(_log(n, b), b)     else:         return 0     # Driver code if __name__=='__main__':     n = 100     base = 5     print("Log*(", n, ") = ", recursiveLogStar(n, base))   # This code is contributed by # Sanjit_Prasad

## C#

 // Recursive C# program to  // find value of Iterated Logarithm   using System;   public class GFG{ static int _log(double x, double baset) {     return (int)(Math.Log(x) /                  Math.Log(baset)); }   static double recursiveLogStar(double n,                              double b) {     if (n > 1.0)         return 1.0 +              recursiveLogStar(_log(n,                                  b), b);     else         return 0; }   // Driver code     static public void Main (){           int n = 100, baset = 5;     Console.WriteLine("Log*(" + n + ") = " +                 recursiveLogStar(n, baset)); } }   // This code is contributed by ajit.

## PHP

  1.0)         return 1.0 +                 recursiveLogStar(_log($n,   $b), $b);  else  return 0; } // Driver code $n = 100; $base = 5; echo "Log*(" , $n , ")"," = ", recursiveLogStar($n, $base), "\n";   // This code is contributed by ajit ?>

## Javascript

 

Output :

Log*(100) = 2

Time Complexity: O(logn)

Auxiliary Space: O(logn) due to recursive stack space
Iterative Implementation :

## C++

 // Iterative CPP function to find value of // Iterated Logarithm int iterativeLogStar(double n, double b) {     int count = 0;     while (n >= 1) {         n = _log(n, b);         count++;     }     return count; }

## Java

 // Iterative Java function to find value of // Iterated Logarithm public static int iterativeLogStar(double n, double b) {     int count = 0;     while (n >= 1) {         n = _log(n, b);         count++;     }     return count; }   // This code is contributed by pratham76

## Python3

 # Iterative Python function to find value of # Iterated Logarithm     def iterativeLogStar(n, b):       count = 0     while(n >= 1):         n = _log(n, b)         count = count + 1       return count   # This code is contributed by # Sanjit_Prasad

## C#

 // Iterative C# function to find value of // Iterated Logarithm static int iterativeLogStar(double n, double b) {     int count = 0;     while (n >= 1)     {         n = _log(n, b);         count++;     }     return count; }   // This code is contributed by rutvik_56

## Javascript

 

Time Complexity: O(logn)

Auxiliary Space: O(1)

This article is contributed by Abhishek rajput. If you like GeeksforGeeks and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to review-team@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.