2016-06-06 2 views
0

Вот мой код, который doesn t work. It seems to me that it has to but when I use console (in inspect section in the browser) nothing happens, it doesn t найти ошибку.Можно ли отобразить строку 2 в мощности 1,2 ... 10 (самый большой), используя цикл while с Math.pow?

I`d быть очень благодарны, если вы объясните мне, где ошибка (-ы)

var counter = 0; 
var result = Math.pow (2, counter); 
    while (result < Math.pow (2, 10)) { 
    console.log(result); 
    counter = counter + 1; 
    } 
+2

Вы меняете счетчик в ваше время, но никогда не изменяя результата – juvian

ответ

0

Как juvian указано в комментарии, вы обновляете переменную «counter» в цикле while, но вам также нужно обновлять «результат» в каждом цикле. Вот исправленная версия вашего кода с объяснением.

// Counter starts at zero 
var counter = 0; 

/* 
    Result needs to be initialized to check the 
    initial condition. 

    Alternatively, we could have changed the 
    condition of the while loop to something like: 
    while (counter <= 10) { ... } 

    (this would be technically faster because 
    you're not re-computing Math.pow(2,10)) 
*/ 
var result = 0; 

// We perform the code in here until the condition is false 
while (result < Math.pow (2, 10)) { 
    // First, we raise 2 to the power of counter (0 the first time) 
    var result = Math.pow (2, counter); 
    // Print the result 
    console.log(result); 
    // Now increment the counter 
    // (this will change what the first line of the loop does) 
    counter = counter + 1; 
} 
+0

как начнется цикл, если он Безразлично 'знает, что результат (и, следовательно, является ли оно' s больше или меньше, чем Math.pow (2, 10))? –

+0

О, вы поднимаете хороший момент. Вы можете инициализировать результат до нуля, чтобы исправить это. Я отредактирую свой код соответствующим образом. –

0

Альтернативный способ написания этого будет:

var result = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9].map(function (num) { 
    return Math.pow(2, num) 
}) 
0

Инкрементный счетчик никогда не используется при вычислении результатов. Попробуй это.

var counter = 0; 
while (Math.pow (2, counter) < Math.pow (2, 10)) { 
    console.log(Math.pow (2, counter)); 
    counter = counter + 1; 
}