Problem
- Write a function ‘persistence’ that takes in a positive parameter ‘num’ and returns its multiplicative persistence, which is the number of times you must multiply the digits in ‘num’ until you reach a single digit.
- 양수 매개변수 ‘num’을 사용해서, 곱하기 지속성(multiplicative persistence)을 반환한다.
- 곱하기 지속성은, 한 자릿수에 도달할 때까지 ‘num’에 숫자를 곱해야 하는 횟수이다.
Solution 01
function persistence(n) {
for (let i = 0; n > 9; i++) {
n = n.toString().split('').reduce((total, i) => total * i);
}
return i;
}
persistence(30); // 3 (3*9=27, 2*7=14, 1*4=4)
persistence(999); // 4 (9*9*9=729, 7*2*9=126, 1*2*6=12, 1*2=2)
Solution 02
function persistence(n) {
let count = 0;
n = n.toString();
while (n.length > 1) {
count++;
n = n.split('').map(Number).reduce((a, b) => a * b).toString();
}
return count;
}
persistence(30); // 3 (3*9=27, 2*7=14, 1*4=4)
persistence(999); // 4 (9*9*9=729, 7*2*9=126, 1*2*6=12, 1*2=2)