Я работаю над факториальной суммой, которая выглядит следующим образом: 1/1!+1/2!+1/3!...
до нужного количества. Вот мой код до сих пор:Сумма факториальной доли
#include <stdio.h>
int factorial(int n)
{
if (n==0)
return 1;
else
return 1/(n * factorial(n-1));
}
int main()
{
int i, n;
float sum=0;
printf("Enter desired factorial fraction: ");
scanf("%d", &n);
for (i=1; i<=n; i++) sum = sum + factorial(i);
printf("The value is %f\n", sum);
return 0;
}
У меня есть небольшое представление о том, что я делаю, я действительно новичок в этом. Мой мыслительный процесс состоял в том, чтобы настроить функцию хрустания числа (мой жаргон, вероятно, выключен), а затем инициировать основную функцию. Я думал, что правильно настроен, но через пару часов я чувствую себя просто потерянным. Любая помощь и руководство будут высоко оценены.
Update
Вот обновленный код:
#include <stdio.h>
float factorial(int n)
{
if (n==1)
return 1;
else
return ((1.0/n) * factorial(n-1.0));
}
int main()
{
float i, n;
float sum=0;
printf("Enter desired factorial fraction: ");
scanf("%f", &n);
for (i=1; i<=n; i++) sum = sum + factorial(i);
printf("The value is %f\n", sum);
return 0;
}
Так что спасибо вам, ребята, теперь единственное, что осталось для меня, чтобы выяснить, почему мой вход «0» не дает результата «1», так как 0! = 1. Должен ли я перемещать этот оператор if внутри «int main()»?
Я думаю, что вы получили это неправильно .... запустить его с небольшим количеством и отладки и посмотреть ... – Dani
Один небольшой комментарий. Факториал большого числа приведет к ошибкам переполнения. Лучше найти 1.0/factorial (n) правильно, используя цикл 'for'. Что-то вроде 'd = 1; для (i = 1; i <= n; i ++) d/= i; '. Для больших 'n' это должно приблизиться к 0. Не забудьте поставить проверки на' n == 0' и т. Д. – ssm