Помогите написать код решения задачи на С++
Вычислить значение S, для вычисления факториала использовать функцию.
Вот мои потуги написать код:
#include<iostream>
#include<math.h>
using namespace std;
int fact(int x) {
if (x <= 1) return 1;
else return x * fact(x - 1);
}
int main(void) {
double a, d;
int i;
float s, m;
s = 0;
for (i = 1; i < 11; i++) {
m = 2;
d = fact(pow(int(i), int(m)));
a = float((pow(int(-1), int(i + 1))) / float(d));
s = s + a;
}
printf("Result=%f\n", s);
}
Ответы (1 шт):
Автор решения: MarianD
→ Ссылка
#include<iostream>
#include<math.h>
using namespace std;
double fact(int x) {
if (x <= 1) return 1;
else return x * fact(x - 1);
}
int main(void) {
double a, d;
int i;
double s = 0;
for (i = 0; i < 11; i++) {
d = fact(i * i);
a = pow(-1, i + 1) / d;
s = s + a;
}
printf("Result=%f\n", s);
}
Вывод:
Result=-0.041664
Нужно было использовать double, когда угрожает переполнение, и цикл начинать с нуля. Ваша переменная m не была нужна т.к. ee значение всегда 2, и вместо pow(int(i), int(m)) я просто написал i * i.
