来自字符串的数字转换返回未定义的Javascript [duplicate]

问题描述 投票:0回答:1

递归函数返回undefined,而日志打印期望值。这可能与.map()或.reduce()有关吗?

console.log(parseInt(digital_root(16)))
//Expected: 7
//Actual: NaN
console.log(digital_root(456))
//Expected: 6
//Actual: undefined

function digital_root(n) {
    if(n < 10){
        console.log(n)
        //digital_root(16) --> 16 (expected)
        //digital_root(456) --> 456 (expected)
        return n
    }else{
        digital_root(String(n).split("").map(Number).reduce((a, b) => a + b, 0))
    }
}
javascript recursion type-conversion undefined arrow-functions
1个回答
0
投票

您应该在returnif子句中都添加else语句:

function digital_root(n) {
    if(n < 10){
        console.log(n)
        //digital_root(16) --> 16 (expected)
        //digital_root(456) --> 456 (expected)
        return n
    }else{
        return digital_root(String(n).split("").map(Number).reduce((a, b) => a + b, 0))
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.