Найти сумму с помошью рекуррентного выражения - C (СИ)

Узнай цену своей работы

Формулировка задачи:

найти сумму с помошью рекуррентного выражения ∞ Ʃ ((-1)^k *x^2k)/(k^2+1) k=1

Решение задачи: «Найти сумму с помошью рекуррентного выражения»

textual
Листинг программы
#include <stdio.h>
 
float pw(float os, int st)
{
    if(st == 1)
        return os;
    else 
        return os * pw(os, st -1);
}
 
int main()
{
    int k, i;
    float x, sum = 0;
    printf("k , x:");
    scanf("%i %f", &k, &x);
    for(i = 1;i <= k;i++){
        sum += (pw((float)-1, i)*pw(x, 2*i))/(pw((float)i, 2) + 1);
        }
    printf("sum = %f", sum);
    return 0;
}

Объяснение кода листинга программы

  1. Включаем стандартную библиотеку ввода-вывода
  2. Определяем функцию с именем pw, которая принимает два аргумента типа float и int.
  3. Используем условный оператор if для проверки, если значение переменной st равно 1, то возвращаем значение переменной os, иначе рекурсивно вызываем функцию pw с аргументами os и st-1 и умножаем результат на os.
  4. В функции main считываем значения переменных k и x с помощью функции scanf.
  5. Создаем цикл for для перебора значения переменной k от 1 до k.
  6. Внутри цикла добавляем в переменную sum результат вызова функции pw с аргументами (float)-1 и i, и (x и 2*i), результат делится на сумму pw(i, 2) и 1.
  7. Выводим значение переменной sum с помощью функции printf.
  8. Возвращаем 0, чтобы указать, что программа успешно завершилась.

Оцени полезность:

15   голосов , оценка 3.867 из 5
Похожие ответы