给出一个非负整数num,反复将所有位置上的数字相加,直到得到一个一位整数。

<script>
    function getOne(num){
        var strArr=String(num).split('');
        var sum=strArr.reduce(function(init,item){
            init=init+Number(item);
            return init;
        },0);
        if(sum<10){
            return sum;
        }else{
            getOne(sum);
        }
    }
    console.log(getOne(343));
</script>

想问一下为什么最后打印出来的结果是undefined

阅读 2.7k
3 个回答

少了个return

     function getOne(num){
        var strArr=String(num).split('');
        var sum=strArr.reduce(function(init,item){
            init=init+Number(item);
            return init;
        },0);
        if(sum<10){
            return sum;
        }else{
            return getOne(sum); // 这里少了个return
        }
    }
    console.log(getOne(343));

为什么这里需要加return呢?

建议简写一下

function getOne(num){ 
  var strArr=String(num).split(''); 
  var sum = strArr.reduce(function(init,item){ 
    return init+Number(item); 
  },0);
  return sum<10? sum : getOne(sum);
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题