用get方法计算阶乘

时间:2016-03-05 15:22:04

标签: java factorial

我想用get方法计算数字的阶乘(我必须解决一个更大的问题)。这是我尝试过的,它返回1

public Sigma() {
    n = -1;
}

public Sigma(int n) {
    n = n;
}

private int Facto(int n) {
    for (int i = 1; i <= n; i++) {
        result = result * i;
    }
    return result;
}

public int getFacto() {
    return Facto(n);
}

3 个答案:

答案 0 :(得分:0)

问题在于,在构造函数中,键入n = n而不是this.n = n。这个问题是指定了构造函数中的局部变量,而不是类的字段。 this.n指的是n字段,是您想要的。

您收到的输出为1,因为所有原始数字字段的默认值为0。使用你的代码,0! = 1(这是正确的),所以无论你传递给构造函数是什么,这都是你的输出,因为构造函数忽略了它的参数。

在不相关的说明中,请使用camelCase而不是UpperCase作为方法名称(和字段名称)。 UpperCase只能用于类/接口/枚举/注释。此外,result = result * n可以简化为(almost)等效语句result *= n

答案 1 :(得分:0)

对于factorial,你需要在facto函数中初始化结果,比如

private int Facto(int n)
 {
    int result = 1;
    for (int i = 1; i <= n; i++) 
    {
           result = result * i;
    }

    return result;
 }

答案 2 :(得分:-1)

谢谢你的一切。我解决了我的问题。我用this.n改变了n.n并且非常感谢。