Программа для вычисления Log n

Опубликовано: 7 Января, 2022

Напишите однострочную функцию C, которая вычисляет и возвращает . Например, если n = 64, тогда ваша функция должна вернуть 6, а если n = 128, тогда ваша функция должна вернуть 7.

Using Recursion

C++

// C++ program to find log(n) using Recursion
#include <iostream>
using namespace std;
 
unsigned int Log2n(unsigned int n)
{
    return (n > 1) ? 1 + Log2n(n / 2) : 0;
}
 
// Driver code
int main()
{
    unsigned int n = 32;
    cout << Log2n(n);
    getchar();
    return 0;
}
 
// This code is contributed by kirti

C

// program to find log(n) using Recursion
#include <stdio.h>
 
unsigned int Log2n(unsigned int n)
{
    return (n > 1) ? 1 + Log2n(n / 2) : 0;
}
 
int main()
{
    unsigned int n = 32;
    printf("%u", Log2n(n));
    getchar();
    return 0;
}

Java

// Java program to find log(n)
// using Recursion
class Gfg1
{
 
    static int Log2n(int n)
    {
        return (n > 1) ? 1 + Log2n(n / 2) : 0;
    }
     
    // Driver Code
    public static void main(String args[])
    {
        int n = 32;
        System.out.println(Log2n(n));
    }
}
 
// This code is contributed by Niraj_Pandey

Python3

# Python 3 program to
# find log(n) using Recursion
 
def Log2n(n):
 
    return 1 + Log2n(n / 2) if (n > 1) else 0
 
# Driver code
n = 32
print(Log2n(n))
 
# This code is contributed by
# Smitha Dinesh Semwal

C#

// C# program to find log(n)
// using Recursion
using System;
 
class GFG {
 
    static int Log2n(int n)
    {
        return (n > 1) ? 1 +
            Log2n(n / 2) : 0;
    }
     
    // Driver Code
    public static void Main()
    {
        int n = 32;
         
        Console.Write(Log2n(n));
    }
}
 
// This code is contributed by
// nitin mittal.

Javascript

<script>
// program to find log(n) using Recursion
 
   
 function  Log2n( n)
{
    return (n > 1) ? 1 + Log2n(n / 2) : 0;
}
   
     n = 32;
    document.write( Log2n(n));
   //This code is contributed by simranarora5sos
</script>

Выход :

 5

Сложность времени: O (log n)
Вспомогательное пространство: O (log n), если размер стека учитывается во время рекурсии, в противном случае O (1)

Использование встроенной функции журнала

We can use the inbuilt function of the standard library which is available in the library.  

C

// C program to find log(n) using Inbuilt
// function of <math.h> library
#include <math.h>
#include <stdio.h>
int main()
{
    unsigned int n = 32;
    printf("%d", (int)log2(n));
    return 0;
}

Java

// Java program to find log(n) using Inbuilt
// function of java.util.Math library
import java.util.*;
 
class Gfg2
{
    public static void main(String args[])
    {
        int n = 32;
        System.out.println((int)(Math.log(n) / Math.log(2)));
    }
}
 
// This code is contributed by Niraj_Pandey

Python3

# Python3 program to find log(n) using Inbuilt
 
# Function of math library
import math
 
if __name__ == "__main__":
    n = 32
     
    print(int(math.log(n, 2)))
     
# This code is contributed by ukasp

Javascript

<script>
//program to find log(n) using Inbuilt
// function of <math.h> library
 
     n = 32;
     document.write(  Math.log2(n));
//This code is contributed by simranarora5sos
</script>

Выход :

 5

Временная сложность: O (1)
Вспомогательное пространство: O (1)

Попробуем расширенную версию проблемы.

Напишите однострочную функцию Logn (n, r), которая возвращает .

Using Recursion 

C

// C program to find log(n) on arbitrary base using Recursion
#include <stdio.h>
 
unsigned int Logn(unsigned int n, unsigned int r)
{
    return (n > r - 1) ? 1 + Logn(n / r, r) : 0;
}
 
int main()
{
    unsigned int n = 256;
    unsigned int r = 3;
    printf("%u", Logn(n, r));
    return 0;
}

Java

// Java program to find log(n) on
// arbitrary base using Recursion
class Gfg3
{
    static int Logn(int n, int r)
    {
        return (n > r - 1) ? 1 + Logn(n / r, r) : 0;
    }
     
    // Driver Code
    public static void main(String args[])
    {
        int n = 256;
        int r = 3;
        System.out.println(Logn(n, r));
    }
}
 
// This code is contributed by Niraj_Pandey

Javascript

<script>
//program to find log(n) on arbitrary base using Recursion
 
   
   function Logn( n,  r)
{
    return (n > r - 1) ? 1 + Logn(n / r, r) : 0;
}
   
     n = 256;
     r = 3;
    document.write( Logn(n, r));
//This code is contributed by simranarora5sos
</script>

Выход :

 5

Сложность времени: O (log n)
Вспомогательное пространство: O (log n), если размер стека учитывается во время рекурсии, в противном случае O (1)

Использование встроенной функции журнала

We only need to use the logarithm property to find the value of log(n) on arbitrary base r. i.e., where k can be any anything, which for standard log functions are either e or 10 

C

// C program to find log(n) on arbitrary base
// using log() function of maths library
#include <math.h>
#include <stdio.h>
 
unsigned int Logn(unsigned int n, unsigned int r)
{
    return log(n) / log(r);
}
 
int main()
{
    unsigned int n = 256;
    unsigned int r = 3;
    printf("%u", Logn(n, r));
 
    return 0;
}

Java

// Java program to find log(n) on arbitrary base
// using log() function of java.util.Math library
import java.util.*;
 
class Gfg4 {
 
    public static void main(String args[])
    {
        int n = 256;
        int r = 3;
        System.out.println((int)(Math.log(n) / Math.log(r)));
    }
}
 
// This code is contributed by Niraj_Pandey

Javascript

<script>
// program to find log(n) on arbitrary base
// using log() function of maths library
 
   function  Logn( n, r)
{
    return Math.floor(Math.log(n) / Math.log(r));
}
   
    n = 256;
    r = 3;
    document.write( Logn(n, r));
//This code is contributed by simranarora5sos
</script>

Выход :

 5

Временная сложность: O (1)
Вспомогательное пространство: O (1)

Эта статья предоставлена Шубхамом Бансалом. Если вам нравится GeeksforGeeks, и вы хотели бы внести свой вклад, вы также можете написать статью, используя write.geeksforgeeks.org, или отправить свою статью по электронной почте: deposit@geeksforgeeks.org. Посмотрите, как ваша статья появляется на главной странице GeeksforGeeks, и помогите другим гикам.

Хотите узнать о лучших видео и практических задачах, ознакомьтесь с базовым курсом C ++ для базового и продвинутого уровня C ++ и курсом C ++ STL для базового уровня плюс STL. Чтобы завершить подготовку от изучения языка к DS Algo и многому другому, см. Полный курс подготовки к собеседованию .
C++ C