Así que estoy haciendo el desafío SuperDigit de HackerRank y, aunque tengo el valor correcto para todos los casos de prueba informales, el cuadro de salida dice que el resultado no está definido. Realmente no entiendo de qué se trata indefinido o cómo una variable con un valor devuelve como indefinido.
function superDigit(n, k) { // Write your code here var nArr = []; for(let i = 0; i < n.length; i++) { nArr.push(n[i]); } console.log('nArr: ' + nArr); var nComb = 0; for(let i = 0; i < nArr.length; i++) { nComb += parseInt(nArr[i]); } console.log('nComb: ' + nComb); var nMult = nComb *= k; console.log('nMult: ' + nMult); console.log(''); if(nMult < 10) { return nMult; } else { superDigit(nMult.toString(),1); } }Probablemente también desee devolver el resultado de superDigit . Entonces, cuando llame a superDigit recursivamente, agregue la declaración de devolución. También limpié un poco las llamadas de console.log para que sea más legible para mí.
function superDigit(n, k) { var nArr = []; for(let i = 0; i < n.length; i++) { nArr.push(n[i]); } var nComb = 0; for(let i = 0; i < nArr.length; i++) { nComb += parseInt(nArr[i]); } var nMult = nComb *= k; console.log('nMult:', nMult, 'nArr:', nArr, 'nComb:', nComb); if(nMult < 10) { return nMult; } else { return superDigit(nMult.toString(),1); } } document.getElementById('result').innerText = superDigit("200", 20); <html> <body> <p id="result"></p> </body> </html>