当写递归的时候碰到的问题

function persistence(num) {
    var numArr = num.toString().split("");
    var total = 1;
    for (var i = 0; i < numArr.length; i++) {
        total *= parseInt(numArr[i]);
    }
    
    if (total < 10) {
     cosnole.log(total);
return total; } else { persistence(total); } } console.log(persistence(999));

这种写法会出现错误,打印的结果为undefind, 原因是在进入else的时候没有将persistence  return出来,进入递归之后的返回值会一直在persistence函数的内部

解决办法很简单

function persistence(num) {
    var numArr = num.toString().split("");
    var total = 1;
    for (var i = 0; i < numArr.length; i++) {
        total *= parseInt(numArr[i]);
    }
    
    if (total < 10) {
        return total;
    } else {
        return persistence(total);
    }
}


console.log(persistence(999));

在else的时候return这个函数出来,这样执行persistence就会返回执行函数,知道返回的是个个位数为止

posted @ 2017-07-28 16:20  无情码字员  阅读(212)  评论(0编辑  收藏  举报