使用console.log可以打印出来结果,但是return出去就是undefined

给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数。

leetcode的各位相加问题,我的思路是将数字分割然后相加,递归,小于10的数字return出去

相关代码

        var addDigits = function(num) {            let str = num+=''
            let len = str.split('').length;            let numTemp = 0
            if(num < 10) {                console.log(num)//2
                return num
                
            } else {                for (let i =0; i<len;i++) {
                    numTemp += parseInt(str.split('')[i], 10)
                }    
                addDigits(numTemp)
                
            }
            
        };        
    console.log(addDigits(38)//undefined

你期待的结果是什么?实际看到的错误信息又是什么?

正确答案应为2,实际上返回出来的是undefined,但是打印出来的也是2


动漫人物
浏览 2392回答 2
2回答

万千封印

递归调用结果没有返回,肯定为undefined;修改为下面的:var&nbsp;addDigits&nbsp;=&nbsp;function&nbsp;(num)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;let&nbsp;str&nbsp;=&nbsp;num&nbsp;+=&nbsp;'';&nbsp;&nbsp;&nbsp;&nbsp;let&nbsp;len&nbsp;=&nbsp;str.split('').length;&nbsp;&nbsp;&nbsp;&nbsp;let&nbsp;numTemp&nbsp;=&nbsp;0;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(num&nbsp;<&nbsp;10)&nbsp;return&nbsp;num;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(let&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;<&nbsp;len;&nbsp;i++)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;numTemp&nbsp;+=&nbsp;parseInt(str.split('')[i],&nbsp;10); &nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;addDigits(numTemp); };

慕田峪4524236

如果是递归&nbsp;addDigits&nbsp;前面少了个&nbsp;return
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript