Найти сумму с помошью рекуррентного выражения - 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; }
Объяснение кода листинга программы
- Включаем стандартную библиотеку ввода-вывода
- Определяем функцию с именем pw, которая принимает два аргумента типа float и int.
- Используем условный оператор if для проверки, если значение переменной st равно 1, то возвращаем значение переменной os, иначе рекурсивно вызываем функцию pw с аргументами os и st-1 и умножаем результат на os.
- В функции main считываем значения переменных k и x с помощью функции scanf.
- Создаем цикл for для перебора значения переменной k от 1 до k.
- Внутри цикла добавляем в переменную sum результат вызова функции pw с аргументами (float)-1 и i, и (x и 2*i), результат делится на сумму pw(i, 2) и 1.
- Выводим значение переменной sum с помощью функции printf.
- Возвращаем 0, чтобы указать, что программа успешно завершилась.