Что такое внутренний цикл в несовершенно вложенных циклах? - PullRequest
0 голосов
/ 18 июля 2011

Helo, я немного запутался в определении внутреннего цикла в случае несовершенно вложенных циклов. Считайте этот код

for (i = 0; i < n; ++i)
{
   for (j = 0; j <= i - 1; ++j)
        /*some statement*/
    p[i] = 1.0 / sqrt (x);
   for (j = i + 1; j < n; ++j)
   {
       x = a[i][j];
       for (k = 0; k <= i - 1; ++k)
          /*some statement*/
       a[j][i] = x * p[i];
   }
}

Здесь у нас есть два цикла на одном уровне вложенности. Но во втором цикле, который перебирает «j», начиная с j + 1, снова появляется другой уровень вложенности. Учитывая всю структуру цикла, который является самым внутренним циклом в коде?

Ответы [ 3 ]

2 голосов
/ 18 июля 2011

Обе j петли одинаково вложены в i, k - самая внутренняя петля

0 голосов
/ 18 июля 2011

Lol Я не знаю, как это объяснить, поэтому я сделаю все возможное, я рекомендую использовать debugger!это может помочь вам так сильно, что вы даже не узнаете

for (i = 0; i < n; ++i)
{
   //Goes in here first.. i = 0..
   for (j = 0; j <= i - 1; ++j) {
        //Goes here second..
        //Goes inside here and gets stuck until j is greater then (i- 1) (right now i = 0)
        //So (i-1) = -1 so it does this only once.
        /*some statement*/
    p[i] = 1.0 / sqrt (x);
   }
   for (j = i + 1; j < n; ++j)
   {
      //Goes sixth here.. etc.. .. 
      //when this is done.. goes to loop for (i = 0; i < n; ++i)

      //Goes here third and gets stuck
      //j = i which is 0 + 1.. so, j == 1
      //keeps looping inside this loop until j is greater then n.. idk what is n..
      //Can stay here until it hits n.. which could be a while.
       x = a[i][j];
       for (k = 0; k <= i - 1; ++k) {
           //Goes in here fourth until k > (i-1).. i is still 0..
           //So (i-1) = -1 so it does this only once
          /*some statement*/
       a[j][i] = x * p[i];
      }
      //Goes here fifth.. which goes.... to this same loop!
   }
}
0 голосов
/ 18 июля 2011

Я бы сказал, что k является самым внутренним циклом, потому что если вы посчитаете количество циклов, необходимое для достижения его извне, это три цикла, и это больше всего из всех четырех цикловваш код.

...