Еще проще и более практический пример рекурсии?
Приведу пример, который сам на днях использовал. К сожалению не на JS, а на PHP и он не такой простой, но возможно немного вам поможет:public function post()
    {
        if (!$this->parent()) {
            return  $this->commentable_id;
        }
        else {
            return $this->parent()->post();
        }
    }
В общем суть такая, что нужно было уведомлять пользователя, если кто-то прокомментировал его пост, при этом, на сайте многоуровневая система комментариев. И если кто-то написал ответ на комментарий, то он уже никак не связан с постом, а автора уведомить всё таки нужно. Если комментарий написан не как ответ на чей-то, а как просто коммент под сам пост, то у него parent вернёт null, а иначе вернёт комментарий, ответом на который он является. И с помощью рекурсии я реализовал получение id поста, на который кто-то оставил коммент: в момент создания комментария вызывается этот метод post (функция, если так понятнее), которая, если это коммент первого уровня, вернёт id поста, а если нет, то вызовет этот же метод, но уже у комментария, ответом на который является данный. И эта функция будет вызываться сколько угодно много раз, пока не дойдёт до высшего уровня и не получит оттуда id поста.
при создании сайта рекурсия либо вообще не применяется, либо очень ограниченно.
вот вам попроще пример var factorial = function(n) {
    if(n == 0) {
        return 1
    } else {
        return n * factorial(n - 1);
    }
}
factorial(num);