Каково логическое объяснение этой строки кода, которая включает цикл «для»? - PullRequest
0 голосов
/ 23 марта 2019

У меня возникли проблемы с пониманием логики этих следующих строк кода. Может кто-нибудь помочь объяснить, почему эти коды дали следующий результат?

  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

Ответы [ 2 ]

0 голосов
/ 23 марта 2019

Давайте сначала поймем, что делает mystery (). Допустим, например, int k = 4,

y = k // y becomes 4

В цикле for мы выполняем итерацию от x = 1 до x = (k-1), т.е. 3 в конечном итоге, для цикла у становится 4 * 3 * 2 * 1 = 24

Именно поэтому, когда n в вашем основном методе равно 4, вы получите вывод как 24.

Короче говоря, таинственная функция вычисляет факториал для n = 1 до n = 5 Таким образом, выход факториалов от 1 до 5

т.е. 1 2 6 24 120

0 голосов
/ 23 марта 2019

В основном вы объявили новый int с именем n.В цикле 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 () вы объявляетедва целых числа: х и у.Вы инициализируете y в k (параметр, который вы получили из вызова метода).В цикле for вы инициализировали x в 1 и выполняли цикл for до тех пор, пока x> (k-1).Это запускает цикл к-1 раз.Затем вы умножали y на (kx) каждый раз, когда запускали цикл.Когда x> (k-1), вы вернули y.

Давайте возьмем, к примеру, mystery (5).Я расширю цикл for в mystery (), чтобы вы могли лучше его визуализировать.

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;

Математически mystery (5) = 5 * 4 * 3 * 2 * 1 = 120 Итак, mystery ()является факториальной функцией.mystery (5) = 5 !, mystery (4) = 4 !, и т. д.

...