Посчитать сумму ряда при помощи функции и рекурсии - C (СИ)
Формулировка задачи:
Помогите дописать код.
Задание:
посчитать суму ряда (x/(n!)), суму считать при помощи функции и рекурсии. Я все уже перепробовал, ничего не помогает.#include <stdio.h>
#include <conio.h>
int fact (int n);
int sum (int n, int x);
int main ()
{
int N, f, x;
float suma=0;
printf ("Enter N: ");
scanf ("%d", &N);
f=fact(N);
printf ("Enter X: ");
scanf ("%d", &x);
suma= sum (N, x);
printf ("Suma = %0.2f", suma);
getch ();
return 0;
}
int fact (int n)
{
return (n>1)? n*fact(n-1):1;
}
int sum (int n, int x)
{
return (n>0)? ((x)/(fact(n))+((x)/(fact(n-1)))):1;
}Решение задачи: «Посчитать сумму ряда при помощи функции и рекурсии»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
double Sum(double x, double eps, double f, double n, double s)
{
double a=x/f;
s+=a;
if (a<eps) return s;
return Sum(x,eps,f*(n+1),n+1,s);
}
int main(int argc, char *argv[])
{
double y,x,eps;
printf("x=");
scanf("%lf",&x);
printf("eps=");
scanf("%lf",&eps);
printf("Sum=%lf\n",Sum(x,eps,1,1,0));
system("PAUSE");
return 0;
}
Объяснение кода листинга программы
- Включаются необходимые заголовочные файлы
- Определяется функция Sum, которая принимает в качестве аргументов double x, double eps, double f, double n, double s.
- Внутри функции происходит вычисление значения переменной a как частное x на f.
- Значение переменной a добавляется к переменной s.
- Проверяется условие if (a<eps), если оно истинно, то функция возвращает значение s.
- В противном случае функция вызывает саму себя, передавая в качестве аргументов x, eps, f*(n+1), n+1, s.
- В функции main() считываются значения переменных x и eps с помощью функции scanf().
- Вызывается функция Sum(x, eps, 1, 1, 0), где 1-первый аргумент, 1-это начальное значение n, а 0-это начальное значение s.
- Выводится результат вычисления функции Sum с помощью функции printf().
- Выполняется команда system(
PAUSE), которая приостанавливает выполнение программы до нажатия клавиши. - Функция main() возвращает 0, что означает успешный конец работы программы.