如何修复我不断从中得到的未定义结果?
How do I fix the undefined result I keep getting from this?
所以我正在进行 HackerRank superDigit 挑战,尽管我对所有非正式测试用例都有正确的值,但输出框显示结果未定义。
我并没有真正理解 undefined 是什么意思,也没有弄清楚一个值为 returns 的变量如何被定义为 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);
}
}
您可能还想 return superDigit
结果。所以在递归调用superDigit
的时候,加上return语句。我还稍微清理了 console.log
调用,以便它对我来说更具可读性。
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>
所以我正在进行 HackerRank superDigit 挑战,尽管我对所有非正式测试用例都有正确的值,但输出框显示结果未定义。 我并没有真正理解 undefined 是什么意思,也没有弄清楚一个值为 returns 的变量如何被定义为 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);
}
}
您可能还想 return superDigit
结果。所以在递归调用superDigit
的时候,加上return语句。我还稍微清理了 console.log
调用,以便它对我来说更具可读性。
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>