我有以下一段代码,它不想设计up
,它被声明为float
,由down
,声明为int
。我试过将down
铸造到浮子上,但这也不起作用。我得到的输出是 10 倍inf
.
int main(void) {
float x = 0.1, y = 0.0;
for (int n = 0; n < 10; n++) {
float up = exp(x, n);
int down = fac(n);
y = up / down;
printf("%fn", y);
x += 0.1;
}
return 0;
}
谁能帮我找到这段代码中的(巨大)错误?exp(x,n)
和 fac(n)
都返回正确的值类型以 up
和 down
。
这是两个功能exp
和fac
float exp(float x, int n) {
float power = 1;
for (int i = 0; i < n; i++) {
power *= x;
}
return power;
}
int fac(int n) {
int fac = 1;
for (int i = 0; i <= n; i++) {
fac *= i;
}
return fac;
}
你除以 0:
int fac = 1;
for (int i = 0; i <= n; i++) {
fac *= i; /* This will be 0 since you start from i=0. */
}
return fac;
您可能只想从1
开始。