Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   stopped after running 1000 steps and cannot display visualization (https://javascript.ru/forum/misc/69343-stopped-after-running-1000-steps-cannot-display-visualization.html)

Alexsandr 16.06.2017 07:27

stopped after running 1000 steps and cannot display visualization
 
const test = (n) =>{
let result = n;

while (result > 1) { 
AmountNumber(result);
}
}
const AmountNumber = (n) =>{
  n--;
  return n;
}
test(20);

http://pythontutor.com/visualize.htm...rjs=iFg0cG3uKI
Error: stopped after running 1000 steps and cannot display visualization. Shorten your code, since Python Tutor is not designed to handle long-running code.

почему так? Вроде простая функция берет число n и с помощью другой функции производит n-- пока while(result >1)

Diphenyl Oxalate 16.06.2017 08:31

result не меняется, отсюда бесконечный цикл. Как раз в соседней теме обсуждение, почему так написать не получится.

Alexsandr 16.06.2017 08:57

var i = 0;
while (i < 3) {
  alert( i );
  i++;
}

а почему здесь меняется условие а result нет

ksa 16.06.2017 09:55

Цитата:

Сообщение от Alexsandr
а почему здесь меняется условие а result нет

В последнем случае переменная i не передается как параметр в функцию... ;)

Как вариант решения...

const test = (n) =>{
let result = n;

while (result > 1) { 
   result=AmountNumber(result);
}
}
const AmountNumber = (n) =>{
  n--;
  return n;
}
test(20);

P.S.
Но с таким синтаксисом я не знаком... :(

Alexsandr 16.06.2017 10:40

Хочешь сказать что result попав параметром функции AmountNumber(n) теряет связь с result и возвращает значение return n; которое не имеет никакого отношения к изначальному result? И даже если я заменю n в AmountNumber = (n) на одинаковое result это не будет иметь значения потому как это уже другая переменная с другой ячейкой памяти, я верно понял?

ksa 16.06.2017 10:53

Цитата:

Сообщение от Alexsandr
я верно понял?

Да. :yes:


Часовой пояс GMT +3, время: 00:11.