Возвращаемое значение рекурсивной функции равно 'undefined'

Всякий раз, когда я выполняю этот фрагмент, console.log перед возвратом возвращает массив с 20-кратным значением 23. Однако console.log(Check (users, 0, 20)); возвращает только 'undefined'.

Что я делаю неправильно?

var users = [23, 23, 23, 23, 23, 23, 23, 23, 23, 23];
console.log(Check(users, 0, 20));

function Check(ids, counter, limit){
    ids.push(23);

    // Recursion
    if (counter+1 < limit){
        Check(ids, counter+1, limit);
    }
    else {
        console.log(ids);
        return ids;
    }
}

Ответ 1

Вы забыли вернуть результат из точки, в которую вы входите в recusrion.

var users = [23, 23, 23, 23, 23, 23, 23, 23, 23, 23];
console.log(Check(users, 0, 20));

function Check(ids, counter, limit){
    ids.push(23);

    // Recursion
    if (counter+1 < limit){
        return Check(ids, counter+1, limit); // return here!
    }
    else {
        console.log(ids);
        return ids;
    }
} 

Но возвращаемое значение кажется бесполезным, потому что ваша функция также меняет начальный массив.