Search code examples
javascriptundefined

How do I fix the undefined result I keep getting from this?


So I'm doing the HackerRank superDigit challenge and even though I have the correct value for all the informal test cases, the Output box says that the result is undefined. I'm not really getting what undefined is all about or how a variable with a value returns as undefined.

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


Solution

  • You probably want to return the superDigit result as well. So when calling superDigit recursively, add the return statement. I also cleaned up the console.log calls a bit so its more readable to me.

    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>