Рубрики

Эффективная программа для расчета суммы серии 1/1! + 1/2! + 1/3! + 1/4! + .. + 1 / n!

Учитывая положительное целое число n, напишите функцию для вычисления суммы ряда 1/1! + 1/2! + .. + 1 / n!

Простое решение — инициализировать сумму как 0, затем запустить цикл и вызвать функцию факториала внутри цикла.

Ниже приводится реализация простого решения.

C ++

// Простая программа на C ++ для вычисления суммы ряда 1/1! + 1/2! + .. + 1 / n!
#include <iostream>

using namespace std;

  
// Сервисная функция для поиска

int factorial(int n)

{

    int res = 1;

    for (int i=2; i<=n; i++)

       res *= i;

    return res;

}

  
// Простая функция для возврата значения 1/1! + 1/2! + .. + 1 / n!

double sum(int n)

{

    double sum = 0;

    for (int i = 1; i <= n; i++)

        sum += 1.0/factorial(i);

    return sum;

}

  
// Программа драйвера для проверки вышеуказанных функций

int main()

{

    int n = 5;

    cout << sum(n);

    return 0;

}

Джава

// Простая Java-программа для вычисления
// сумма серии 1/1! + 1/2! + .. + 1 / n!

import java.io.*;

  

class GFG {

      

    // Сервисная функция для поиска

    static int factorial(int n)

    {

        int res = 1;

        for (int i = 2; i <= n; i++)

        res *= i;

        return res;

    }

      

    // Простая функция для возврата значения

    // из 1/1! + 1/2! + .. + 1 / n!

    static double sum(int n)

    {

        double sum = 0;

        for (int i = 1; i <= n; i++)

            sum += 1.0/factorial(i);

        return sum;

    }

  

    // Драйвер программы

    public static void main (String[] args) 

    {

        int n = 5;

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

    }

}

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

python3

# Python3 программа для вычисления суммы ряда
# 1/1! + 1/2! + .. + 1 / n!

  
# Функция поиска факториала числа

def factorial(n):

    res = 1

    for i in range(2, n + 1):

            res *= i

    return res

          
# Простая функция для возврата значения
№ 1/1! + 1/2! + .. + 1 / n!

def sum(n):

    s = 0.0

      

    for i in range(1, n + 1):

        s += 1.0 / factorial(i)

    print(s)

  
# Драйверная программа для проверки вышеуказанных функций

n = 5

sum(n)

  
# Этот код предоставлен Danish Raza

C #

// Простая программа на C # для вычисления суммы
// из серии 1/1! + 1/2! + .. + 1 / n!

using System;

  

class GFG {

      

    // Сервисная функция для поиска

    static int factorial(int n)

    {

        int res = 1;

        for (int i = 2; i <= n; i++)

            res *= i;

              

        return res;

    }

      

    // Простая функция для возврата значения

    // из 1/1! + 1/2! + .. + 1 / n!

    static double sum(int n)

    {

        double sum = 0;

        for (int i = 1; i <= n; i++)

            sum += 1.0/factorial(i);

              

        return sum;

    }

  

    // Драйвер программы

    public static void Main () 

    {

        int n = 5;

          

        Console.WriteLine(sum(n));

    }

}

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

PHP

<?php
// Простая PHP-программа для вычисления
// сумма серии 1/1! + 1/2! + .. + 1 / n!

  
// Сервисная функция для поиска

function factorial($n)

{

    $res = 1;

    for ($i = 2; $i <= $n; $i++)

        $res *= $i;

    return $res;

}

  
// Простая функция для возврата
// значение 1/1! + 1/2! + .. + 1 / n!

function sum($n)

{

    $sum = 0;

    for ($i = 1; $i <= $n; $i++)

        $sum += 1.0 / factorial($i);

    return $sum;

}

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

$n = 5;

echo(sum($n));

  
// Этот код предоставлен Ajit.
?>


Выход:

1.71667

Временная сложность вышеупомянутого решения составляет O (n * n!), Что огромно.

Эффективное решение может найти сумму за O (n) времени. Идея состоит в том, чтобы вычислить факториал в том же цикле, что и сумма. Ниже приводится реализация этой идеи.

C ++

// Простая программа на C ++ для вычисления суммы ряда 1/1! + 1/2! + .. + 1 / n!
#include <iostream>

using namespace std;

  
// Эффективная функция для возврата значения 1/1! + 1/2! + .. + 1 / n!

double sum(int n)

{

    double sum = 0;

    int fact = 1;

    for (int i = 1; i <= n; i++)

    {

       fact *= i;         // Обновить факториал

       sum += 1.0/fact;   // Обновить сумму серии

    }

    return sum;

}

  
// Программа драйвера для проверки вышеуказанных функций

int main()

{

    int n = 5;

    cout << sum(n);

    return 0;

}

Джава

// Простая Java-программа для вычисления
// сумма серии 1/1! + 1/2! + .. + 1 / n!

import java.io.*;

  

class GFG {

      

    // Эффективная функция для возврата

    // значение 1/1! + 1/2! + .. + 1 / n!

    static double sum(int n)

    {

        double sum = 0;

        int fact = 1;

        for (int i = 1; i <= n; i++)

        {

            // Обновить факториал

            fact *= i;

              

            // Обновить сумму серии

            sum += 1.0/fact; 

        }

        return sum;

    }

  

    // Драйвер программы

    public static void main (String[] args) 

    {

        int n = 5;

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

    }

}

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

python3

# Python3 программа для вычисления суммы ряда
# 1/1! + 1/2! + .. + 1 / n!

  
# Функция для возврата значения
# 1/1! + 1/2! + .. + 1 / n!

def sum(n):

    sum = 0

    fact = 1

  

    for i in range(1, n + 1):

  

        # Обновление факториала

        fact *=

  

        # Обновить сумму серии

        sum += 1.0/fact 

  

    print(sum)

  
# Драйверная программа для проверки вышеуказанных функций

n = 5

sum(n)

  
# Этот код предоставлен Danish Raza

C #

// Простая программа на C # для вычисления суммы
// из серии 1/1! + 1/2! + .. + 1 / n!

using System;

  

class GFG {

      

    // Эффективная функция для возврата

    // значение 1/1! + 1/2! + .. + 1 / n!

    static double sum(int n)

    {

        double sum = 0;

        int fact = 1;

          

        for (int i = 1; i <= n; i++)

        {

              

            // Обновить факториал

            fact *= i;

              

            // Обновить сумму серии

            sum += 1.0 / fact; 

        }

        return sum;

    }

  

    // Драйвер программы

    public static void Main () 

    {

        int n = 5;

          

        Console.WriteLine(sum(n));

    }

}

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

PHP

<?php
// Простая PHP-программа для
// вычисляем сумму ряда
// 1/1! + 1/2! + .. + 1 / n!

  
// Эффективная функция для
// возвращаем значение 1/1! +
// 1/2! + .. + 1 / n!

function sum($n

{

    $sum = 0;

    $fact = 1;

    for ($i = 1; $i <= $n; $i++)

    {

        // Обновить факториал

        $fact *= $i;    

          

        // Обновить сумму серии

        $sum += 1.0 / $fact

    }

    return $sum;

}

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

$n = 5;

echo sum($n);

  
// Этот код предоставлен vt_m.
?>


Выход:

1.71667

Эта статья предоставлена Рахул Гупта . Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.

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

Эффективная программа для расчета суммы серии 1/1! + 1/2! + 1/3! + 1/4! + .. + 1 / n!

0.00 (0%) 0 votes