Могут ли некоторые объяснить, сколько раз выполняется оператор print? - PullRequest
0 голосов
/ 18 октября 2018
 // For the below algorithm, calculate the exact number of times
   // System.out.println statement is executed as a function of n. Assume n≥1

    for (int i=0; i<=n; i++) {
    for (int j = i; j < 2*n; j++) {
    System.out. println(”1 iteration executed!”);
    }
    }

Это решение, но мне трудно понять математику.

Overall RT = 2n + (2n-1) + (2n-2) + … + n =
 = (n+1)*n + (n+(n-1)+(n-2)+…+1+0) =
 = n2 + n + n*(n+1)/2 =
 = 1.5*n2 + 1.5n

Ответы [ 2 ]

0 голосов
/ 18 октября 2018

Цикл запускается 2n раз в первой итерации, а затем 1 раз меньше до (n + 1) -й итерации, когда он выполняется n раз.

2n + (2n-1) + (2n-2) + … + n

Обратите внимание, что есть n+1 терминов из этой серии.

Давайте вычтем n из каждого термина и сложим их отдельно.Это дает нам (n+1)*n плюс каждый член минус n:

(n+1)*n + (2n-n) + (2n-1-n) + … + (n-n)

Это упрощает до:

(n+1)*n + n + (n-1) + (n-2) + … + 0

Теперь хорошо известно , что сумма 1+2+3+...+n это (n+1)*n/2, и это именно то, что n + (n-1) + (n-2) + … + 0 это:

(n+1)*n + (n+1)*n/2

Теперь мы можем просто умножить его на:

n^2 + n + (n^2)/2 + n/2

Что упрощает до:

1.5n^2 + 1.5n
0 голосов
/ 18 октября 2018

Итак, давайте пройдемся по этому.Допустим, значение n равно 4.

i начинается с 0, поэтому j также начинается с 0 на этот раз с шагом
j до 1 меньше 2*n, чторавно 8
Это означает, что значения j на этот раз будут 0, 1, 2, 3, 4, 5, 6, 7, всего 8 различных значений

i увеличивается до 1, поэтому j начинается с 1на этот раз
j будет по-прежнему увеличиваться до тех пор, пока 1 не станет меньше 2*n или 8
. Значения j на этот раз будут 1, 2, 3, 4, 5, 6, 7, всего 7 различных значений.Это на 1 меньше, чем в прошлый раз!

В следующий раз значения j будут 2, 3, 4, 5, 6, 7.6 разных значений.

Этот шаблон будет продолжаться до тех пор, пока j не начнется с 4.Тогда j примет 4 различных значения и циклы выйдут.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...