在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ 使用console.log可以打印出來結(jié)果,但是return出去就是undefi

使用console.log可以打印出來結(jié)果,但是return出去就是undefined

給定一個非負整數(shù) num,反復(fù)將各個位上的數(shù)字相加,直到結(jié)果為一位數(shù)。

leetcode的各位相加問題,我的思路是將數(shù)字分割然后相加,遞歸,小于10的數(shù)字return出去

相關(guān)代碼

        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

你期待的結(jié)果是什么?實際看到的錯誤信息又是什么?

正確答案應(yīng)為2,實際上返回出來的是undefined,但是打印出來的也是2

回答
編輯回答
悶騷型

你的遞歸方式寫錯了,執(zhí)行一次就返回值了,你console的那個已經(jīng)不是同一個函數(shù)的了

var addDigits = function(num) {
            let str = num+=''
            let len = str.split('').length;
            let numTemp = 0
            for (let i =0; i<len;i++) {
                    numTemp += parseInt(str.split('')[i], 10)
            }    
            numTemp>=10&&(numTemp=addDigits(numTemp))
            return numTemp
        };
2017年4月14日 12:02
編輯回答
終相守

如果 num<10能得到正確結(jié)果, 大于10則進入遞歸, return num 只是結(jié)束遞歸條件返回~ 最后函數(shù)沒有返回值

2018年2月3日 08:39
編輯回答
愛是癌

如果是遞歸 addDigits 前面少了個 return

2017年4月13日 02:40
編輯回答
神曲

遞歸調(diào)用結(jié)果沒有返回,肯定為undefined;修改為下面的:

var addDigits = function (num) {
    let str = num += '';
    let len = str.split('').length;
    let numTemp = 0;
    if (num < 10) return num;
    for (let i = 0; i < len; i++) {
        numTemp += parseInt(str.split('')[i], 10);
    }
    return addDigits(numTemp);
};
2018年8月6日 21:38