繁体   English   中英

检查数字是否自恋的函数

[英]function that checks if a number is narcisstic or not

我多次运行代码但找不到问题!

自恋数是一个正数,它是它自己的数字的总和,每个数字都提高到给定基数的数字的幂。 在这个 Kata 中,我们将自己限制为十进制(以 10 为底)。

您的代码必须返回真或假(不是“真”和“假”),具体取决于给定的数字是否是以 10 为基数的自恋数字。

 function narcissistic(value) { let strDigits = value.toString(); let power = strDigits.length; let arrayDigits = strDigits.split(''); let sum, poweredValue = 0; for (let i = 0; i < power; i++){ poweredValue = Number(arrayDigits[i])**power; sum += poweredValue; } if (sum === value){ return true; }else { return false; } };

您必须将sum的初始值分配为0 默认情况下,它设置为undefined 并且在undefined中添加一些东西会得到NaN ,并且与NaN的任何比较总是false

function narcissistic(value) {
  let strDigits = value.toString();
  let power = strDigits.length;

  let arrayDigits = strDigits.split("");
  let sum = 0,
    poweredValue = 0;
  for (let i = 0; i < power; i++) {
    poweredValue = Number(arrayDigits[i]) ** power;
    sum += poweredValue;
  }
  if (sum === value) {
    return true;
  } else {
    return false;
  }
}

您假设表格的陈述:

let x, y =0;

xy都初始化为 0。但 x 仍然是undefined 并且 type undefined + type number将评估为NaN (不是数字)。 没有数字等于NaN

只需正确初始化:

 function narcissistic(value) { let strDigits = value.toString(); let power = strDigits.length; let arrayDigits = strDigits.split(''); let sum =0, poweredValue = 0; for (let i = 0; i < power; i++){ poweredValue = Number(arrayDigits[i])**power; sum += poweredValue; } if (sum === value){ return true; }else { return false; } }; console.log(narcissistic(153));

类似的东西?

 const n = 153 function action(n) { let sum = 0; n.toString().split('').forEach(i => { sum += parseInt(i)**n.toString().length; }) return sum == n } console.log(action(n))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM