Почему мой алгоритм использует не линейное пространство памяти? - PullRequest
0 голосов
/ 07 марта 2020

В настоящее время я пишу этот алгоритм проверки равенства бросков просто для удовольствия, главная цель - сделать это декларативно и в функциональном стиле. Почему-то мой алгоритм использует нелинейное пространство памяти. Фактически, он не может работать из-за RangeError: Превышен максимальный размер стека вызовов. Будем рады получить помощь от вас:

const roll = (a: number): ((b: number) => number[]) => (b: number):  number[] => {
  let a1 = a * Math.floor(Math.random() * 6 + 1);
  let b1 = b * Math.floor(Math.random() * 6 + 1);
  return [a1, b1]
};

const compare = () => {
  let counter: number = 0;
  let totalcounter: number = 10000;
  const compareStep = (a: number[]) => {
    (() => (a[0] === 1 || a[1] === 1) && counter++)();
    totalcounter -= 1;
    (totalcounter === 0) ? console.log(counter / 10000) : compareStep(roll(1)(1));
  };
  return compareStep(roll(1)(1))
}

let Compare = compare();

Compare

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