Получение каждого возвращаемого значения рекурсивной процедуры - PullRequest
0 голосов
/ 17 марта 2020

Я хочу присвоить возвращаемое значение рекурсивной функции переменной во время рекурсии. Я пытаюсь реализовать рекурсивный генератор случайных чисел и хочу сохранить каждое значение, возвращаемое процедурой, до его остановки. Не знаю как.

function rand(seed, m, inc, mod)
{
    if(seed === 0)
        return 2;
    else
        return (m * rand(seed-1, m, inc, m) + inc) % mod;
}

1 Ответ

2 голосов
/ 17 марта 2020

Вам понадобится некоторое ведро для хранения значений в.

function rand(depth, m, inc, mod, bucket=[]) {
  let nextStep = 2;

  if(depth !== 0) {
    nextStep = (m * rand(depth-1, m, inc, m, bucket) + inc) % mod;
  }

  bucket.push(nextStep);
  return bucket;
}

// somewhere else
const generatedRandomValues = rand(a, b, c, d);
const randomValue = generatedRandomValues[-1];

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

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