Рубрики

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

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

Использование рекурсии

С

// C программа для поиска log (n) с использованием рекурсии
#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-программа для поиска log (n)
// используя рекурсию

class Gfg1 

{

  

    static int Log2n(int n)

    {

        return (n > 1) ? 1 + Log2n(n / 2) : 0;

    }

      

    // Код драйвера

    public static void main(String args[])

    {

        int n = 32;

        System.out.println(Log2n(n));

    }

}

  
// Этот код предоставлен Niraj_Pandey

python3

# Python 3 программа для
# find log (n) с помощью рекурсии

  

def Log2n(n):

  

    return 1 + Log2n(n / 2) if (n > 1) else 0

  
# Код драйвера

n = 32

print(Log2n(n))

  
# Этот код предоставлен
# Смита Динеш Семвал

C #

// C # программа для поиска log (n)
// используя рекурсию

using System;

  

class GFG {

  

    static int Log2n(int n)

    {

        return (n > 1) ? 1 + 

            Log2n(n / 2) : 0;

    }

      

    // Код драйвера

    public static void Main()

    {

        int n = 32;

          

        Console.Write(Log2n(n));

    }

}

  
// Этот код предоставлен
// нитин митталь.

Выход :

5

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

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

Мы можем использовать встроенную функцию стандартной библиотеки, которая доступна в библиотеке.

С

// C программа для поиска log (n) используя Inbuilt
// функция библиотеки <math.h>
#include <math.h>
#include <stdio.h>

int main()

{

    unsigned int n = 32;

    printf("%d", (int)log2(n));

    return 0;

}

Джава

// Java программа для поиска log (n) используя Inbuilt
// функция библиотеки java.util.Math

import java.util.*;

  

class Gfg2 

{

    public static void main(String args[])

    {

        int n = 32;

        System.out.println((int)(Math.log(n) / Math.log(2)));

    }

}

  
// Этот код предоставлен Niraj_Pandey

Выход :

5

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

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

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

Использование рекурсии

С

// C программа для поиска log (n) на произвольной основе с помощью рекурсии
#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 программа для поиска log (n)
// произвольная база с использованием рекурсии

class Gfg3 

{

    static int Logn(int n, int r)

    {

        return (n > r - 1) ? 1 + Logn(n / r, r) : 0;

    }

      

    // Код драйвера

    public static void main(String args[])

    {

        int n = 256;

        int r = 3;

        System.out.println(Logn(n, r));

    }

}

  
// Этот код предоставлен Niraj_Pandey

Выход :

5

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

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

Нам нужно только использовать свойство logarithm, чтобы найти значение log (n) на произвольной базе r . т.е. где k может быть любым, что для стандартных функций журнала либо e, либо 10

С

// C программа для поиска log (n) на произвольной основе
// используя функцию log () библиотеки математики
#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-программа для поиска log (n) на произвольной основе
// используя функцию log () библиотеки java.util.Math

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)));

    }

}

  
// Этот код предоставлен Niraj_Pandey

Выход :

5

Сложность времени: O (1)
Вспомогательное пространство: O (1)
Эта статья предоставлена Shubham Bansal . Если вы как GeeksforGeeks и хотели бы внести свой вклад, вы также можете написать статью с помощью contribute.geeksforgeeks.org или по почте статьи contribute@geeksforgeeks.org. Смотрите свою статью, появляющуюся на главной странице GeeksforGeeks, и помогите другим вундеркиндам.

Рекомендуемые посты:

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

0.00 (0%) 0 votes