JS实现数字各位反复相乘至个位数的persistence函数
实现persistence各位迭代相乘函数
需求描述
编写persistence函数,接收数字类型参数,规则为反复计算该数字每一位数值的乘积,直到乘积为单个数字,返回最终的单个数字结果。
计算示例
调用persistence(39)的正确返回值为4,计算流程如下:
- 第一次计算:3 * 9 = 27,结果为两位数,继续计算
- 第二次计算:2 * 7 = 14,结果为两位数,继续计算
- 第三次计算:1 * 4 = 4,结果为单个数字,终止计算返回4
初始待补全代码
当前代码仅实现了单次各位相乘的逻辑,缺少循环判断,无法迭代到最终个位数结果:
function persistence(number) { let a = number.toString(); let b = 1; for (const ch of a) { b *= +ch } console.log(b) // 27 } // persistence(39) // 39 --> 4 (because 3*9 = 27, 2*7 = 14, 1*4 = 4 and 4 has only one digit)
补全后完整实现
核心思路是增加外层循环,判断当前计算结果的位数,只要大于1位就重复执行各位相乘的逻辑,直到得到个位数后返回:
function persistence(number) { let current = number; // 结果为多位数时持续迭代 while (current >= 10) { let product = 1; // 遍历每一位计算乘积 for (const ch of current.toString()) { product *= Number(ch); } current = product; } return current; }
验证说明:传入39时迭代后最终返回4,符合预期;传入个位数参数时会直接返回原值,无需额外计算。
内容的提问来源于stack exchange,提问作者Yaroslav Kolbaiev
相关产品推荐
相关产品推荐

