使用get方法计算阶乘

Calculating factorial with get method

我想用get方法计算一个数的阶乘(我必须解决一个更大的问题)。这是我尝试过的 returns 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);
}

问题是,在您的构造函数中,您键入 n = n 而不是 this.n = n。这个问题是构造函数内部的局部变量被赋值,而不是你的 class 的字段。 this.n指的是字段n,就是你想要的。

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

在一个不相关的说明中,请使用驼峰式而不是大写的方法名称(和字段名称)。大写字母只能用于 classes/interfaces/enums/annotations。此外,result = result * n 可以简化为 (almost) 等效语句 result *= n.

对于阶乘,您需要在 facto 函数中初始化结果,如下所示

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

    return result;
 }