下面的代码运行错误。如果我给函数4赋值,它会返回数字-861720576。你能帮上忙吗?
#include <stdio.h>
int fact(int x)
{
if (x<0)
{
return -1;
}
else if (x==0)
{
return 1;
}
else if (x==1)
{
return 1;
}
else
{
for (int i=2;i<x;i++)
{
x*=i;
}
return x;
}
}
int main()
{
printf("%d",fact(4));
return 0;
}..
发布于 2021-04-15 06:33:26
循环终止条件为i<x,但每次循环运行时,x都会发生变化。请注意,终止表达式在每次循环迭代之前进行计算,因此它将使用i和x的最新值。
发布于 2021-04-15 06:38:34
在某一时刻,x将达到一个不在整数范围内的数字。在这一点上,x将会变得混乱。此外,如果x可以达到任何数字,那么您的循环将是无尽的。
发布于 2021-04-15 06:41:21
您每次都会更改x的值。还是试试这个吧。
int final_val = x;
for (int i=2;i<x;i++)
{
final_val *=i;
}
return final_val;https://stackoverflow.com/questions/67099904
复制相似问题