C语言老是出现-1.#IND00该怎么解决

#include<stdio.h>

#include<math.h>


int j(int n)

{

if(n==1||n==0)

{

return 1;

}

else

return n*j(n-1);

}





main()

{

int c,r;

double n,t;

double p,e=2.7;

r=1000/(10*60);

printf("请输入时间t=");

scanf("%lf",&t);

printf("请输入人流n=");

scanf("%lf",&n);

c=j(n);

p=pow(r*t,n)*pow(e,-r*t)/c;

printf("当%lf分钟内有%lf游客来的概率为%6.5lf\n",t,n,p);


}


慕后端8527005
浏览 6054回答 1
1回答

onemoo

一般出出现“#IND”就表示进行了无意义的算数运算(很可能是除零之类的)。虽然不知道你的测试数据是什么,不过根据你的代码我猜测下:j 函数计算阶乘,当参数 n 稍微大些的话(我猜应该不超过几十),其阶乘结果就会超过 int 的取值范围,结果开始为负值,这时你的这个程序的计算就已经不可能正确了。而当参数再大些的话,阶乘结果可能就归零了。这样计算 p 的那一步就是算数除零了。你输入的 n 是不是超过了几十?
打开App,查看更多内容
随时随地看视频慕课网APP