import java.lang.Math;
public class HelloWorld
{
public static void main(String[] args)
{
int n;
for(n=1;n<=5;n++)
System.out.println(mystery(n));
}
public static int mystery(int k)
{
int x,y;
y=k;
for(x=1;x<=(k-1);x++)
y=y*(k-x);
return y;
}
}
此代码给出输出1,2,6,24,120。我可以理解除了1之外的所有,它如何在开始时显示1,对于x = 1,k = 1和y = 1,表达式y = y *(k-x)将首次变为零。请解释一下输出。
答案 0 :(得分:0)
这是由于行:return y;
当k = 1时,此循环不运行:
for(x=1;x<=(k-1);x++)
y=y*(k-x);
因此该方法只返回y,它仍然是1,因为它没有被循环修改。
答案 1 :(得分:-1)
你的神秘方法中有(x = 1; x&lt; =(k-1); x ++),当x = 1,k = 1时,这对于(x = 1; x <=(k-1) ); x ++)循环不会运行,因为1&lt; = 0是假的! 输出以1开始,因为实际上当n = 2时,for-loop内部神秘将仅运行一次(2 <= 1在x增加为2时给出假,并且返回值y = 1。