Nano Hash - криптовалюты, майнинг, программирование

Общее количество значений - сумма

Мне нужно написать программу "long int sum(int n)", которая суммирует общее количество значений следующим образом:

1! − 2! + 3! − ... ± n!

Мне удалось написать сумму для:

1-3 + 5 - ... ± (2n + 1)

float sum (int n) {
int max = 2*n +1, i = 1, sum = 0, ch = 2;

for (i = 1; i <= max; i+2; ){
    if ((ch%2) == 0){
        sum += i;
    }
    else{
        sum = sum - i;
    }
    ch++;
    return sum;
}

Но я не знаю/имею представление, как это сделать для факториальной суммы.

16.12.2012

  • сделать факториальную функцию и вызвать ее для каждого n 17.12.2012
  • Вам также нужно будет изменить цикл, чтобы он выполнялся от 1 до n с шагом 1. 17.12.2012

Ответы:


1

полезно сделать еще одну функцию, которая вычисляет факториал, и другую, которая вычисляет сумму чередующихся рядов. . .

    int factorial(int n)
    {
        int sum = 1;
        if (n > 0)
            for (int i = n; i > 1; --i)
                sum *= i;
        else if (n <= 0)
            return 0;

        return sum;
    }

    int alernatingSeriesSum(int nStart)
    {
        if(nStart < 1) return 0;
        int sum = 0;
        for(int i=1; i<nStart; ++i)
            sum += (factorial(i) * ((i%2)==0 ? -1 : 1));  //multiply -1 if its an even #s
        return sum;
    }

факториал довольно прост, умножьте на значение, уменьшите на единицу и повторяйте, пока не достигнет 1.

сумма переменного ряда аналогична, она вызывает факториал для итерации достижения (за исключением того, что на этот раз индекс увеличивается) и создает чередующийся знак, умножая на -1 каждый раз, когда индекс четный. вот как мы производим 1! - 2! + 3! - 4! + . . . + (n+1)! - (n+2)!

Надеюсь, это поможет . . .

если вы не можете разбить его на функции, попробуйте написать это все в одной основной функции. . . Я проверил этот код на C, и он работает. не стесняйтесь играть с кодом и пытаться прочитать, что делает каждая строка. удачи.

16.12.2012
  • на каком языке вы его используете? С# или С++? 17.12.2012
  • Я использую его... в Ansi C :) 17.12.2012
  • Пожалуйста, не предоставляйте полные кодовые решения для очевидных домашних вопросов. Спрашивающий ничего не узнает (кроме того, как копировать и вставлять код). Гораздо лучше просто направить их в нужном направлении и позволить им добраться туда самостоятельно. 17.12.2012

  • 2

    Разделите его на две функции. Вместо

    sum += i;
    

    а также

    sum = sum - i;
    

    пытаться:

    sum += factorial(i);
    

    а также

    sum = sum - factorial(i)
    

    где factorial — это некоторый метод, вычисляющий факториал:

    long int factorial(int n) {
        long int fact = n;
        while ( n > 1) {
            n--;
            fact *= n;
        }
    
        return fact;
    }
    
    16.12.2012
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..