关于幂、阶乘和组合的C编程问题
我被分配了一个关于用幂因子和组合解方程的问题。在这个问题中,我被分配到带有for循环的代码幂和阶乘。我想我已经做到了(他们正在一个接一个地工作)。同样在主函数中,我需要计算一个方程。这是我的代码,我觉得很合适。但最终我得到了一个“浮点异常(内核转储)”错误。任何帮助都是好的,我其实不想要正确的答案,如果你能解释为什么我会出现这个错误,那将是很有帮助的。非常感谢。(我不能上传照片,因为声誉问题,如果有办法分享照片,我会的。)关于幂、阶乘和组合的C编程问题,c,C,我被分配了一个关于用幂因子和组合解方程的问题。在这个问题中,我被分配到带有for循环的代码幂和阶乘。我想我已经做到了(他们正在一个接一个地工作)。同样在主函数中,我需要计算一个方程。这是我的代码,我觉得很合适。但最终我得到了一个“浮点异常(内核转储)”错误。任何帮助都是好的,我其实不想要正确的答案,如果你能解释为什么我会出现这个错误,那将是很有帮助的。非常感谢。(我不能上传照片,因为声誉问题,如果有办法分享照片,我会的。) #包括 整数阶乘(整数n){ int i,结果=1; 对于(i=1;i
#包括
整数阶乘(整数n){
int i,结果=1;
对于(i=1;i x,指数->y
int结果=1;
对于(int i=1;i如果确定要执行整数运算,则需要确保除法前分母不为零:
if (denominator != 0)
ans = ans + (numerator/denominator);
在外部for循环的第一次迭代中,i=1
,这意味着分母循环只执行一次,将分母设置为:1^n*C(n1)/n!=1/(n-1)!
,在整数除法中为0(除非n=1
或n=2
)
如果您不打算执行整数运算,则将分母的类型更改为双精度
:
double denominator = 0, numerator = 0;
您可能需要对某个地方进行优化,否则将出现整数溢出。此外,此代码将无法编译。您已定义了answer
,但未定义ans
。因此,不会出现此错误的代码。请发布。请阅读并尝试自己解决此问题。如果您不理解为什么会发生此错误,你至少可以解释它出现在哪里——哪个操作失败了,输入值是什么。顺便说一句:它的拼写是分子
。你所有的除法可能都需要使用双精度
,而不是整数
,否则当分母大于分子时,你就会得到零,检查分母是否大于分子提名人是零或不工作。此外,我明白它的逻辑谢谢大家的帮助。
double denominator = 0, numerator = 0;