当写递归的时候碰到的问题
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就会返回执行函数,知道返回的是个个位数为止