题目:给定非负整数,直到数小于 10
栗子:
per(999) >> 9*9*9=729 >> 7*2*9=126 >> 1*2*6=12 >> 1*2=2(小于 10,结束运算) ==>> 总共运算 4 次
per(123) >> 1*2*3=6(小于 10,结束运算) ==>> 总共运算 1 次
per(4) >> (小于10) ==>> 总共运算 0 次
我:
function persistence(num) {
if (num instanceof Array) {
let number = num[0];
let times = num[1];
if (number < 10) { return times; }
return persistence([[...(number + '')].reduce((prev, curr) => prev * curr), times+1]);
} else {
if (num < 10) { return 0; }
return persistence([[...(num + '')].reduce((prev, curr) => prev * curr), 1]);
}
}
别人:
function persistence(num) {
return `${num}`.length > 1
? 1 + persistence(`${num}`.split('').reduce((a, b) => a * +b)) //当调用到最后(num < 10的时候)最里层返回 0,然后向外每层的返回值都加上 1 就是回调的总层数(也就是persistence函数运算的总次数)
: 0;
}