2013-10-28 3 views
0

Я работаю над проблемой домашней работы и спрашиваю, сколько раз этот код отображает слово «Сообщение» в консоли. Я не понимаю, как это решить.Счетные итерации

For i As Integer = 1 To 10 Step 1 
    For j As Integer = i To 10 Step 1 
    Console.WriteLine("Message") 
    Next 
Next 
+0

Извините за плохой формат, я думаю, что сообщение все еще встречается. – user2860326

+0

Спасибо за исправление Роб! – user2860326

+0

Пожалуйста, сделайте это самостоятельно, а затем спросите, правильны ли ваши рассуждения. Вы узнаете больше об этом. – kjhughes

ответ

1

Внешний цикл выполняет 34 раз, потому что она начинается с 1 и увеличивается на 1 каждый раз, когда остановки на 34, потому что 35-й итерации превысит верхний предел на петле 34.

Внутренний цикл запускается в 39 раз, поскольку он начинается с 1 и увеличивается на 2 каждый раз (1, 3, 5, 7 и т. д.), останавливаясь, когда значение больше 78, но так как 40-я итерация будет равна значению 79, что чем 78, он не выполнит 40-ю итерацию.

34 раза 39 = 1,326, поэтому вы увидите сообщение Message, написанное 1,326 раз в консоли.

В общих чертах, вы можете разбить его на это:

я * (к/2)

где i равно итерации внешнего цикла (34) и j равно итерации внутреннего цикла (78/2 = 39).

+0

Фантастический! Это имеет смысл! Получил грипп и не смог посетить эту лекцию. – user2860326

+0

Но что, если я переформулировал проблему, чтобы выглядеть так. Для i как целое = от 1 до 10 шаг 1 ... для j как целое = от 1 до 10 шагов 1 .... – user2860326

+0

Я могу поместить его в Visual Studio, но я хочу понять логику, лежащую в его основе. Не пытаться лениться. – user2860326

0

1326 раз

внутренней итерации цикла 39 раз (78 номера/2 шага) и итерации внешнего цикла 34 раз (34 номера/1 шаг). Внешний цикл будет повторяться 34 раза, и каждый раз внутренний цикл также будет итерации. Итак:

34 итераций внешнего цикла * 39 итераций внутреннего цикла (каждый раз) = 1326.

1

Как было показано другими ответами, число итераций равно 34 * (78/2) = 1326. Для лучше понять, что происходит, я предлагаю вам написать свой код, как показано ниже, и посмотреть, как значения, если i, j, k change - Здесь K показывает текущий номер итерации. Обратите особое внимание на последнюю строку:

Dim k As Integer = 1 
For i As Integer = 1 To 34 
    For j As Integer = 1 To 78 Step 2 
     Console.WriteLine("Message" & " i:" & i.ToString() & " j:" & j.ToString() & " k:" & k.ToString()) 
     k += 1 
    Next 
Next 

Вы увидите результат, как:

Message i:1 j:1 k:1 

Message i:1 j:3 k:2 

Message i:1 j:5 k:3 

Message i:1 j:7 k:4 

Message i:1 j:9 k:5 

... 

Message i:34 j:75 k:1325 

Message i:34 j:77 k:1326 
Смежные вопросы