gpt4 book ai didi

javascript - Javascript 中的递归函数返回未定义

转载 作者:行者123 更新时间:2023-11-28 18:23:59 25 4
gpt4 key购买 nike

我想创建一个接收数字的函数,该数字将减少到其数字之和(16减少到7 -> 返回7),直到结果只有一位数长(326减少到11)然后减少到 2 -> 返回 2)。

我正在创建一个递归函数,如下所示,但对于长度> 1的数字,它返回未定义。

function digital_root(n) {
var numStr = (typeof n == "string") ? n : n.toString(); // ensure we will use a string
//console.log("evaluating " + numStr + "its length is " + numStr.length);
//now evaluate my base case
if (numStr.length <= 1){
console.log("i will return" + numStr)//should return my 1 digit number
return n; //it doesn't
}
else{
var arr = numStr.split(""); //convert the string into an array
var reducedArr = arr.reduce(function(a,b){
return parseInt(a) + parseInt(b);//sum the elements of the array
});
digital_root(reducedArr);//send the reduced value back for evaluation
}
}
digital_root(16)//returns undefined

我见过一些类似的questions但它们只涉及代码而不是概念。我学习递归的方式是,你有一个评估的基本情况,如果它为真则返回 - 这将是递归的结束 - 如果不是,则继续运行将转换数据的代码再次发送进行评估。

如何避免未定义的结果以及我的递归概念是否准确?

最佳答案

return digital_root(reducedArr);

您在else 分支中缺少return。不执行 return函数将产生未定义

关于javascript - Javascript 中的递归函数返回未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39480936/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com