尝试在Javascript上进行数字根练习时遇到了一些麻烦。
这是我的代码:
function digital_root(n) {
var sNumero = n.toString();
var sum = 0;
for(i = 0 ; i < sNumero.length; i++){
sum += parseInt(sNumero[i]);
}
if(sum > 9){
digital_root(sum);
}
return sum;
}
当我尝试将456输入到'n'时,该函数将返回15。预期值为6。我不知道为什么会这样。
为了帮助大家理解我的问题,以下是练习:
“数字根是数字中所有数字的递归和。给定n, 取n的数字之和。如果该值超过一位, 继续以这种方式减少直到产生一位数。这是 仅适用于自然数。”
答案 0 :(得分:2)
您忘了退货:
if(sum > 9){
return digital_root(sum); // <-- here
}
答案 1 :(得分:0)
您可以在
上在此处添加return
语句
function digital_root(n) {
var sNumero = n.toString();
var sum = 0;
for (i = 0; i < sNumero.length; i++) {
sum += parseInt(sNumero[i]);
}
if (sum > 9) {
return digital_root(sum); // missing return here
}
return sum;
}
console.log(digital_root(456))
或添加新的变量以在返回之前捕获最终结果。
function digital_root(n) {
var sNumero = n.toString();
var sum = 0;
var final_result; // introduce new variable to hold recursive sum
for (i = 0; i < sNumero.length; i++) {
sum += parseInt(sNumero[i]);
}
final_result = sum; // assign sum to final_result variable
if (sum > 9) {
final_result = digital_root(sum);
}
return final_result; // return final_result
}
console.log(digital_root(456))