Il valore di ritorno della funzione ricorsiva è ‘indefinito’

Ogni volta che eseguo questo snippet, console.log before return restituisce l’array con 20 volte il valore 23. Tuttavia console.log (Check (users, 0, 20)); ritorna solo ‘indefinito’.

Che cosa sto facendo di sbagliato?

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; } } 

Hai dimenticato di restituire un risultato dal punto in cui entri in recustion.

 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; } } 

Ma il valore restituito sembra inutile, causa anche la tua funzione che modifica l'array iniziale.