所以我正在尝试解决这个问题:
但是,我不完全确定从哪里开始或我到底在寻找什么。
此外,有人告诉我,我应该期望给程序输入,例如:零 (0)、非常小 (0.00001) 和不那么小 (0.1)。
我得到了这个:http ://en.wikipedia.org/wiki/E_%28mathematical_constant%29作为参考,但是该公式看起来与问题中的公式不完全相同。
最后,有人告诉我程序的输入是一个小数 Epsilon。例如,您可以假设 0.00001f。
您不断添加无限级数,直到当前项的值低于 Epsilon。
但总而言之,我不知道这意味着什么。我有点理解维基上的方程式。但是,我不确定从哪里开始给出问题。看看它,有没有人知道我应该在 C 中使用什么样的公式,什么是“E”以及它在这里发挥作用(即在公式中,我知道它应该是用户输入)。
到目前为止的代码
#include <stdio.h>
#include <math.h>
//Program that takes in multiple dates and determines the earliest one
int main(void)
{
float e = 0;
float s = 0;
float ct = 1;
float ot= 1;
int n = 0;
float i = 0;
float den = 0;
int count = 0;
printf("Enter a value for E: ");
scanf("%f", &e);
printf("The value of e is: %f", e);
for(n = 0; ct > e; n++)
{
count++;
printf("The value of the current term is: %f", ct);
printf("In here %d\n", count);
den = 0;
for(i = n; i > 0; i--)
{
den *= i;
}
//If the old term is one (meaning the very first term), then just set that to the current term
if (ot= 1)
{
ct = ot - (1.0/den);
}
//If n is even, add the term as per the rules of the formula
else if (n%2 == 0)
{
ct = ot + (1.0/den);
ot = ct;
}
//Else if n is odd, subtract the term as per the rules of the formula
else
{
ct = ot - (1.0/den);
ot = ct;
}
//If the current term becomes less than epsilon (the user input), printout the value and break from the loop
if (ct < epsilon)
{
printf("%f is less than %f",ct ,e);
break;
}
}
return 0;
}
电流输出
Enter a value for E: .00001
The value of e is: 0.000010
The value of the current term is: 1.000000
In here 1
-1.#INF00 is less than 0.000010
因此,根据每个人的评论,并使用维基百科中的第 4 个“错位”方程式,就像我被告知的那样,这就是我想出的代码。我脑海中的逻辑似乎与大家所说的一致。但是输出根本不是我想要实现的。有没有人通过查看这段代码知道我可能做错了什么?