простой цикл while в javascript не соблюдает ограничения - PullRequest
0 голосов
/ 30 мая 2018

Я хочу поделиться с вами своим опытом.Я только начал книгу, чтобы изучить Javascript.Поначалу это немного расстраивает, я получил главу о функциях, замыканиях и рекурсии, и выглядит очень сложно, но я буду продолжать усердно работать, так как мне действительно хотелось бы учиться.(спасибо за чтение :))

Теперь у меня проблема с циклом "Пока", я не понимаю, почему он не останавливается, когда достигает предела 50. Вот код:

function fib (one, two, end) {
  while(two < end) {
    if (one == 1) console.log(one);
    two += one;
    console.log(two);
    one += two;
    console.log(one);
  }
}

fib(1, 1, 50);

Результат следующий, и он выходит за пределы 50:

1
2
3
5
8
13
21
34
55
89
144

Большое спасибо за вашу помощь и извините за вопросо такой простой вещи!: -)

Ответы [ 2 ]

0 голосов
/ 30 мая 2018

Состояние цикла происходит перед каждым выполнением тела.Вы изменяете значение two внутри своего тела, и когда цикл пытается запустить снова, он видит, что вы превысили свои пределы и остановились.Это то, что происходит, когда ваш код выполняется.

Начальные значения
one == 1
two == 1

Два меньше 50?Да, начальный цикл.
Результаты 1-го запуска
two == 2
one == 3

Два меньше 50?Да, иди снова.
Результаты второго запуска
two == 5
one == 8

Два меньше 50?Да, иди снова.
Результаты 3-го запуска
two == 13
one == 21

Два меньше 50?Да, иди снова.
Результаты 4-го запуска
two == 34
one == 55

Два меньше 50?Да, иди снова.
Результаты 5-го запуска
two == 89
one == 144

Два меньше 50?Нет, два теперь больше или равно 50. Стоп.

0 голосов
/ 30 мая 2018

two - <50, когда начинается последняя итерация цикла, но значение two увеличивается в течение последней итерации цикла. </p>

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