微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

C语言阶乘函数

如何解决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 都会发生变化。请注意,终止表达式在循环的每次迭代之前进行评估,因此它将使用 ix 的最新值。

,

在某些时候 x 将达到一个不在整数范围内的数字。那时x会搞砸。如果 x 可以达到任何数字,那么您的循环将是无止境的。

,

您每次都在更改 x 的值。不如试试这个。

int final_val = x;
for (int i=2;i<x;i++)
{
    final_val *=i;
}
return final_val;

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。