Javascript的数字根练习

时间:2019-06-25 00:20:29

标签: javascript

尝试在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的数字之和。如果该值超过一位,  继续以这种方式减少直到产生一位数。这是  仅适用于自然数。”

2 个答案:

答案 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))