c - 在 C 语言中找到 'e' 的近似值
问题描述
我正在尝试使用 C 程序找到“e”的近似值。无论我输入 n 的值是什么,我都会使 e 的值为真。请让我在我的代码中找到错误。
#include <stdio.h>
int f;
int k;
int factorial (int f);
int main () {
int n,i;
int e = 1;
printf("Enter the value of n:");
scanf("%d",&n);
for (i = 1; i <= n; i++) {
e = e + (1/factorial(i));
}
printf("The value of e is %d",e);
return(0);
}
int factorial (int f) {
for (k = 1; k <= f; k++) {
f = f*k;
}
return(p);
}
解决方案
如前所述,您必须使用浮点变量。还有一个问题是12之后阶乘函数会溢出!此外,不断地重新计算阶乘是一种处理能力的浪费。这显示了在前项的基础上实现泰勒级数的更有效方法。这也回避了计算阶乘的问题。
#include <stdio.h>
int main(void) {
double e, term;
int t, n;
printf("Enter the value of n:");
if(scanf("%d", &n) != 1) {
return 1;
}
e = 1;
term = 1;
for(t = 1; t <= n; t++) {
term /= t;
e += term;
}
printf("%.15f\n", e);
return 0;
}
n
使用程序可以处理的最大值来输出程序
输入 n:12 的值 2.718281828286169
而math.h
其中是
2.718281828459045...
这不是很准确。此示例允许获得更准确的值:
输入 n:20 的值 2.718281828459046
推荐阅读
- spring - 使用 Spring Cloud 连接器和 HikariCP 配置 Postgresql sslrootcert
- python - 我们可以在 kivy 中使用 matplotlib.animation 吗?如果是,如何?
- javascript - 当我从另一个函数内部调用它时,函数一直返回 0
- jolie - 使用 Jolie 存储工作流状态
- linux - 如何在mongodb中将数据库从一台服务器复制到另一台服务器
- json - 如何在 couchbase 数组中搜索特定字符串
- xml - XSLT 的 document() 函数的 TWIG 等价物是什么?
- c++ - 如果从使用 Poco/Timer 启动的线程进行日志记录,则 Poco HTTPServer 中止
- java - 我可以在我的 java 应用程序上为 config.yml 指定默认值吗?
- node.js - db.createRole 与 Mongoose