【发布时间】:2018-06-17 15:32:54
【问题描述】:
我正在尝试使用 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);
}
【问题讨论】:
-
你知道
e包含很多小数吗? integer 变量怎么会有小数呢? -
顺便说一下,您展示的代码甚至不会构建。请花一些时间阅读the help pages,了解how to ask good questions,并了解如何创建Minimal, Complete, and Verifiable Example。
-
另外,您的阶乘定义不正确。它会乘以 * f 两次。
-
1/factorial(i)是 整数除法,结果为0(1 除外!),即使您有double e。 -
@VictoriaRuiz:比两次更糟糕:它移动循环的速度比赶上它的速度快。
标签: c numerical-methods