包含“for”循环的这行代码背后的逻辑解释是什么?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了包含“for”循环的这行代码背后的逻辑解释是什么?相关的知识,希望对你有一定的参考价值。
我在理解以下代码行背后的逻辑时遇到了一些麻烦。任何人都可以帮助解释为什么这些代码产生以下结果?
public class Test
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
答案
在main中,您声明了一个名为n的新int。在for循环中,您将n初始化为1,然后运行for循环,直到n> 5.如果我们展开for循环,您进行的调用是:
System.out.println(mystery(1));
System.out.println(mystery(2));
System.out.println(mystery(3));
System.out.println(mystery(4));
System.out.println(mystery(5));
在mystery()中,您声明了两个整数:x和y。您将y初始化为k(从方法调用中收到的参数)。在for循环中,将x初始化为1并运行for循环直到x>(k-1)。这运行循环k-1次。然后在每次运行循环时将y乘以(k-x)。当x>(k-1)时,你返回y。
让我们以神秘(5)为例。我将在mystery()中扩展for循环,以便您可以更好地将其可视化。
int x,y;
y = 5;
y = y * (5 - 1); //y*4
y = y * (5 - 2); //y*3
y = y * (5 - 3); //y*2
y = y * (5 - 4); //y*1
return y;
数学上,神秘(5)= 5 * 4 * 3 * 2 * 1 = 120因此,神秘()是阶乘函数。神秘(5)= 5 !,神秘(4)= 4!等等。
另一答案
让我们首先了解mystery()的作用。让我们说int k = 4为例,
y = k // y becomes 4
在for循环中,我们迭代x = 1到x =(k-1),即最终for循环中的3,y变为4 * 3 * 2 * 1 = 24
这就是为什么当你的main方法中n为4时,输出为24。
简而言之,神秘函数计算n = 1到n = 5的阶乘。因此,输出是1到5的阶乘
即yaazkssvpoi
以上是关于包含“for”循环的这行代码背后的逻辑解释是什么?的主要内容,如果未能解决你的问题,请参考以下文章