You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 11:42:23