Java中的阶乘循环分析
考虑以下代码:Java中的阶乘循环分析,java,loops,for-loop,logic,Java,Loops,For Loop,Logic,考虑以下代码: int number; double factorial = 1.0; for(int i=2; i<=5; i++) { factorial *=i; System.out.println(number + "! = " + factorial ); } 我知道从2点开始到5点 factorial *= i; 相当于: factorial = factorial * i; 比如说,factorial是1.0,i是2: 那么演算将是: factori
int number;
double factorial = 1.0;
for(int i=2; i<=5; i++)
{
factorial *=i;
System.out.println(number + "! = " + factorial );
}
我知道从2点开始到5点
factorial *= i;
相当于:
factorial = factorial * i;
比如说,factorial
是1.0
,i
是2
:
那么演算将是:
factorial = 1.0 * 2
等等,直到循环结束。我认为您希望使用
long
(而不是double
,因为您使用了double
,所以您得到了浮点类型)。阶乘通常是整型的。大概
long factorial = 1;
for (int i = 2; i <= 5; i++) {
factorial *= i;
System.out.println(i + "! = " + factorial);
}
表示阶乘=i*阶乘
因子变量范围是在循环之外的继电器,所以它不会在每次循环迭代时重置
所以当i=2时,时间阶乘=2.0
当i=3时,上述计算的时间阶乘值为2.0,因此阶乘=2.0*3,即6
当i=4时,时间阶乘=6*4=24.0
当i=5时,时间阶乘=24*5=120.0
整数;
int number;
for(int i=2; i<=5; i++)
{
double factorial = 1.0;
factorial *=i;
System.out.println(number + "! = " + factorial );
}
对于(int i=2;问题不清楚,但你看到2.0而不是2的原因是因为阶乘是双精度的,而不是整数。默认情况下,它会这样打印出来。你知道阶乘是什么吗?你知道4!=24和5!=120吗?就像@ergonaut说的,这不是一个非常清楚的问题。编辑它来解决你关于相关变量的具体问题t代码,并显示完整的输出,而不是一个被截断的版本。我打算乘以一个double,但我还不明白为什么我得到了6.0/24.0/120.0,因为我知道1.0*2=2.0秒应该是1.0*3=3.0,但我得到了6.0为什么???对于其余的24.0和120.0,如何获得输出…?代码必须是编译错误。变量号未初始化..不错,但为什么我返回3=6.6,4=24.0,5=120.0?@ForlanAnWest当时的问题是什么?:)因为在循环的第一次迭代之后,“阶乘”变成2.0,在下一次迭代中,它就像2.0*3=6.0,这是根据factorial的数学定义,我打算乘以一个double,但我还不明白为什么我得到了6.0/24.0/120.0,因为我知道1.0*2=2.0秒应该是1.0*3=3.0,但是我得到了6.0,为什么??,还有其余的24.0和1200@ForlanAnWest不,第二个是2*3。第三个是4*3*2。阶乘取上一个的结果。即当i=2时,1.0*2=2.0,然后阶乘使用2.0到*到3,依此类推。
2! = 2
3! = 6
4! = 24
5! = 120
factorial *=i;
int number;
for(int i=2; i<=5; i++)
{
double factorial = 1.0;
factorial *=i;
System.out.println(number + "! = " + factorial );
}
int number;
double factorial = 1.0;
for(int i=2; i<=5; i++)
{
factorial *=i;
System.out.println(number + "! = " + factorial );
}