我试图解决Coderbyte挑战,我仍然试图完全理解递归。使用递归添加持久性
下面是问题:使用JavaScript语言,使用AdditivePersistence(num)函数获取传递的num参数,它始终是一个正整数并返回它的附加持久性,这是您必须添加数字的次数直到你达到一个数字。例如:如果num是2718,那么你的程序应该返回2,因为2 + 7 + 1 + 8 = 18和1 + 8 = 9,并且你停在9上。
这里是我放入jsfiddle.net来尝试的解决方案出:
function AdditivePersistence(num) {
var count=0;
var sum=0;
var x = num.toString().split('');
for(var i=0; i<x.length; i++) {
sum += parseInt(x[i]);
}
if(sum.length == 1) {
return sum;
}
else {
return AdditivePersistence(sum);
}
}
alert(AdditivePersistence(19));
它告诉我,有太多的递归。是否还有另一个“其他”我可以把基本上只是重新运行的功能,直到总和是一位数?
您的函数不返回附加的持久性。它返回所有求和结束时得到的一位数字。你永远不会增加计数器,这是你应该计算的。 – Barmar 2015-04-03 02:20:05
尝试使用调试器逐步执行代码。 – 2015-11-01 12:41:56