【发布时间】:2017-02-26 08:44:36
【问题描述】:
我正在尝试解决 codewars 网站上的算法。作为初学者,我很难实现各种编程技术,并且缺乏基本的编程概念,例如作用域、提升等。无论如何,我决心解决这个问题。
说明书说:
编写一个函数,persistence,它接受一个正参数 num 并返回它的乘法持久性,即你必须将 num 中的数字相乘直到达到一个数字的次数。 em>
persistence(39) === 3 // because 3*9 = 27, 2*7 = 14, 1*4=4
// and 4 has only one digit
persistence(999) === 4 // because 9*9*9 = 729, 7*2*9 = 126,
// 1*2*6 = 12, and finally 1*2 = 2
persistence(4) === 0 // because 4 is already a one-digit number
现在我只想达到这个结果3*9 = 27, 2*7 = 14, 1*4=4 但是我卡住了。我知道我错过了什么,请给我一些宝贵的建议!
我的代码如下所示:
function persistence(num) {
var total = 1;
var step = 0;
var number = multiple(num);
while (step < 3) {
for (var i = 0; i < number.length; i++) {
total *= splitNumbers[i];
}
multiple(number);
step += 1;
}
}
function multiple(num) {
var splitNumbers = num.toString().split('');
var a = splitNumbers[0];
var b = splitNumbers[1];
return a * b;
}
persistence(39);
【问题讨论】:
-
number 是一个数字。数字没有长度属性,因此
i < number.length会将 i 的值设置为未定义。顺便说一句,这不是递归。 ;-) -
好的,谢谢,我没注意到))
标签: javascript algorithm