Рекурсия это условно говоря тот самый call stack который выше обсуждали, он имеет свойство переполняться, некоторые языки умеют оптимизировать (интерпретатор/компилятор) как бы разворачивает в обычный стек, и выполняет без call stack'а, жс вот не умеет, выгоднее ручками сделать