Проблемы с рекурсия в JavaScript

145
31 июля 2019, 22:00

Вот есть простая функция --->

function my_function(n) { 
  if (n != 0) { 
    return my_function(n - 1) + " " + n; 
  } 
} 
 
console.log(my_function(9))

Вывод будет такой: undefined 1 2 3 4 5 6 7 8 9.

Объясните пожалуйста откуда берется undefined в начале и почему исправив код на представленный ниже, он выводит последовательность нормально, без undefined?

function my_function(n) { 
  if (n == 1) 
    return '1' 
 
  return my_function(n - 1) + ' ' + n; 
} 
 
console.log(my_function(9));

Answer 1
  function my_function(n) {
            if (n != 0){
             return   my_function(n-1) + " " + n; 
            }
        }
    my_function(9); 

Функция будет вызываться до тех пор, пока не выполнится my_function(0), инструкция return находится внутри условия, куда естественно не попадаем - функция возвращает undefined.

Второй вариант возвращает значение в любом случае.

READ ALSO
Ошибка при инициализации owlCarousel

Ошибка при инициализации owlCarousel

Я вставил owlCarousel на свой сайт и все работает классно, но как убрать ошибку в консоли, а именно:

131
отступы в цикле JS

отступы в цикле JS

Практикуюсь на таблице умножения:

152
Не совсем очевидно, почему не проходит тест:

Не совсем очевидно, почему не проходит тест:

Уже поздно и всех глаза слипаются, но может кто найдёт в чём причина того, что тест проходит неуспешно, большое спасибо заранее! Сам код:

125
JS поп ап не работает в safari

JS поп ап не работает в safari

Простецкий попап, работает везде, кроме айфона и айпада

142