如何解决C语言阶乘函数
下面的代码运行错误。如果我给函数 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;
}
................................
解决方法
循环终止条件是 i<x
但每次循环运行时,x 都会发生变化。请注意,终止表达式在循环的每次迭代之前进行评估,因此它将使用 i
和 x
的最新值。
在某些时候 x 将达到一个不在整数范围内的数字。那时x会搞砸。如果 x 可以达到任何数字,那么您的循环将是无止境的。
,您每次都在更改 x 的值。不如试试这个。
int final_val = x;
for (int i=2;i<x;i++)
{
final_val *=i;
}
return final_val;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。