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

JavaScript实现Narcissistic Number判断的代码bug排查

十进制水仙花数判断函数问题排查

规则说明

  • 水仙花数(Narcissistic Number)为正整数,核心判定逻辑:将数字按十进制位拆分后,每一位数字取该数字的总位数为指数做幂运算,所有幂结果之和等于原数字本身
  • 函数返回要求:必须返回布尔类型true/false,禁止返回字符串形式的'true'/'false'

原代码问题定位

原代码的整体实现思路完全正确,问题出在JS变量声明的细节踩坑:

代码中let sum, poweredValue = 0;的写法存在错误:JS中逗号分隔的变量声明语句,只有紧跟赋值操作的变量会被赋予初始值,这行代码仅给poweredValue赋值为0,sum仅完成声明未做初始化,默认值为undefined。

后续循环执行sum += poweredValue时,undefined与数字做加法运算会得到NaN,而NaN和任何值做全等判断都会返回false,最终导致函数永远无法正确识别出合法的水仙花数。

修复后可直接运行的代码

function narcissistic(value) {
  let strDigits = value.toString();
  let power = strDigits.length;
  
  let arrayDigits = strDigits.split('');
  // 修复:给sum设置初始值0
  let sum = 0, poweredValue = 0;
  for (let i = 0; i < power; i++){
    poweredValue = Number(arrayDigits[i])**power;
    sum += poweredValue;
  }
  // 简化:全等判断本身返回布尔值,无需额外写if/else分支
  return sum === value;
}
  • 简单验证:传入水仙花数153时,计算得1³+5³+3³=1+125+27=153,函数正确返回true;传入非水仙花数123时,计算得1+8+27=36≠123,函数正确返回false,完全符合需求。

内容的提问来源于stack exchange,提问作者ali98ab

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 08:03:30