首页 > 解决方案 > 为什么我的函数在应该返回一个数字时返回未定义?

问题描述

我试图解决一个网站上的挑战,我的代码表现得很奇怪......它返回未定义......有趣的是:如果我在返回语句之前打印“sum”的值,它在控制台中是正确的值.. 。 任何帮助都是极好的

function digital_root(n) {
  let text = String(n);
  let sum = 0;
  for (let i = 0; i < text.length; i++) {
    sum += Number(text[i]);
  }
  if (String(sum).length > 1) {
    digital_root(sum);
  } else {
    return sum;
  }
}

let score = digital_root(456);

标签: javascriptrecursion

解决方案


确保向上传播递归返回值。如果您在digital_root()没有return孩子结果的情况下调用,则父调用返回undefined

if (String(sum).length > 1) {
  return digital_root(sum);
}

推荐阅读