使用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;
}
我想用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;
}