Задать вопрос
Apathy666
@Apathy666

Проблема с циклом for.Почему зацикливается программа?

Если убрать цикл for, то программа работает нормально, но вручную вводить "а" долго, поэтому хочу через цикл for чтобы он сам подставил в "а" все числа от 2 до 10 и результат: "d" и "b" записал в двумерный массив

let array=[];//создаем массив
let d=0;
let b=0;
let c=0
for(a=2;a<=10;a++){//подставляем числа в а
d=0
b=0
c=0
d+=a
while(a%2==0)//если а четное
{
a=a/2
b+=a
}
if(a%2==1)//если что-то нечетное
{
c+=(a*(a-1))/2
b+=c
}
array.push([d,b])
}

for(let i=0;i<=10;i++)//вывод готового массива 2х2
{
console.log(array[i])
}

  • Вопрос задан
  • 234 просмотра
Подписаться 1 Простой 1 комментарий
Решения вопроса 1
EgoSab
@EgoSab
Web-developer
Загадка от Жака Фреско во вложенном цикле while :)

У тебя переменная a имеет функциональную область видимости, то есть твоё a=2 эквивалентно var a = 2;

Окей, у тебя есть цикл for(a=2;a<=10;a++), где он делает 9 итераций (по задумке), однако есть вложенный цикл while, который и даёт вечную петлю этому коду, переприсваивая переменной a новое значение (a = a / 2).

Итог: разберись с a = a / 2 в цикле while.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы