Как остановить рекурсивную функцию, изменяющую собственные переменные? - PullRequest
0 голосов
/ 16 апреля 2019

Я пытаюсь создать алгоритм сортировки JavaScript, который использует рекурсию.Он продолжает изменять свои собственные переменные.Как мне это остановить?

Примером этого является (psuedocode):

function fun():
   a = random 
   fun()
   return a

Проблема в том, что запуск sort () изменяет исходное случайное значение на другое..

Я пытался использовать "this.varname", но это, похоже, не имеет значения.

Мой полный код здесь и рекурсивная функция включенастрока 52. Перезаписываемые переменные бывают «больше» и «меньше».

Код работает, если вы не позволяете ему быть рекурсивным (комментирование 68-71), но, очевидно, это означает, что сортировка выполняется только частично. Если вы хотите запустить код для тестирования, вам понадобится 'p5.JS.Я также извиняюсь за плохой код.

Как всегда, вся помощь приветствуется, и я благодарю вас за то, что вы потратили свое время на помощь мне (и будущим гуглерам).

Бонусные баллы: Кто-нибудь знает, что это за функция сортировки?

1 Ответ

1 голос
/ 16 апреля 2019

Я предполагаю, что у вас есть фон в Python

В JavaScript переменные «требуют» одного из 3 ключевых слов (let, const, var) перед именем переменной при их объявлении. Например, let a = 10; в js будет таким же, как a = 10 в python. Однако, как вы видите, ваш код работает, поэтому объявление переменной без одного из этих ключевых слов должно работать, верно? Да, но не так, как вы ожидаете. a = 10 в js совпадает с window.a = 10. Таким образом, вы фактически привязываете значение 10 к клавише «a» на объекте окна, а не объявляете переменную с функциональной областью действия.

В приведенном ниже примере a внутри foo относится к функции, а a внутри bar "ограничивается" объектом окна.

function foo() {
  let a = 10
}

function bar() {
  a = 10
}

console.log(window.a)

foo();
console.log(window.a)

bar();
console.log(window.a)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...