最里层返回值为 0,每层返回值加 1 ,最外层的返回值就是回调的总层数

题目:给定非负整数,直到数小于 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;
}

posted on 2021-08-15 23:47  In-6026  阅读(58)  评论(0)    收藏  举报

导航