Первое, что нужно понять, это то, что каждый вызов fizzBuzz возвращает массив - он не добавляет к существующему массиву, он каждый раз создает новый.
Итак, если вход n равен 1,он просто возвращает одноэлементный массив с 1 в нем.
Если n> 1, будет рекурсивный вызов.«results» уже создан как пустой массив, поэтому операторы .push () добавляют в этот массив один элемент:
Если n делится на 3 и 5, массив будет ['FizzBuzz'] Если n делится только на 3, массив будет ['Fizz']. Если n делится только на 5, массив будет ['Buzz']. Иначе, массив будет [n] независимо от того, что n есть.
Так как n> 1 (или мы не были бы здесь), мы должны снова вызвать FizzBuzz со следующим более низким n и объединить его результат с нашим.Вот как создается длинный массив - путем конкатенации массива, возвращенного из рекурсивных вызовов в FizzBuzz.