包含“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”循环的这行代码背后的逻辑解释是什么?的主要内容,如果未能解决你的问题,请参考以下文章

通俗的解释Bug

有人可以解释这行 MATLAB 代码吗?

奇怪的蟒蛇“嵌套” for循环

代码背后的逻辑

for循环语句内加数字的逻辑

有人可以解释这个指针在这里指的是啥吗?