double result = 0.0, fact = 1.0;
for (int i = 1; i <= n; ++i) {
fact /= i;
result += fact;
}
printf("Результат вычисления выражения для n=%d: %lf\n", n, result);
НЕ надо использовать в вычислениях float.
НЕ надо на каждой итерации заново пересчитывать весь факториал. У тебя же сумма ряда, задаваемого рекуррентной формулой:
a[1] = 1.0
a[i] = a[i - 1] / i
Андрей ФилюшинЗнаток (319)
3 месяца назад
Извините, так будет правильно выглядеть?
#include <stdio.h>
// Функция для вычисления значения выражения
double calculateExpression(int n) {
double result = 0.0;
double term = 1.0; // Первый член ряда
for (int i = 1; i <= n; i++) {
result += term;
term /= i; // Рекуррентное вычисление следующего члена ряда
}
return result;
}
int main() {
int n;
printf("Введите целое число n: ");
scanf("%d", &n);
double result = calculateExpression(n);
printf("Результат вычисления выражения для n=%d: %lf\n", n, result);
return 0;
}
Цель работы: Изучение приемов организации простейших циклов.
Задача.
Согласно приведенной ниже таблице вычислить требуемое выражение. 8 выражение , проверьте пожалуйста, правильность программы
#include "stdafx.h"
#include <stdio.h>
// Функция для вычисления факториала
int factorial(int num) {
if (num == 0 || num == 1) {
return 1;
} else {
return num * factorial(num - 1);
}
}
// Функция для вычисления выражения
float calculateExpression(int n) {
float result = 0;
for (int i = 1; i <= n; i++) {
result += 1.0 / factorial(i);
}
return result;
}
int main() {
int n;
printf("Введите целое число n: ");
scanf("%d", &n);
float result = calculateExpression(n);
printf("Результат вычисления выражения для n=%d: %f\n", n, result);
return 0;
}