Как работает эта рекурсия?

Это пример из Eloquent Javascript:

Начиная с числа 1 и многократно добавляя 5 или умножая на 3, можно получить бесконечное количество новых чисел. Как бы вы написали функцию, которая, учитывая число, пытается найти последовательность сложений и умножений, которые производят это число?

У меня возникают проблемы с пониманием того, как здесь работает рекурсия, и я задаюсь вопросом, не мог бы кто-нибудь пару раз написать, как вызывается find, или какое-то другое объяснение.

function findSequence(goal) {
  function find(start, history) {
    if (start == goal)
      return history;
    else if (start > goal)
      return null;
    else
      return find(start + 5, "(" + history + " + 5)") ||
             find(start * 3, "(" + history + " * 3)");
  }
  return find(1, "1");
}

console.log(findSequence(24)); // => (((1 * 3) + 5) * 3)

Ответы на вопрос(11)

Ваш ответ на вопрос