函数,检查一个数字是否自恋



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

一个自恋数是一个正数,它是它自己的数字的和,每个数字都是给定基数中位数的幂。在本例中,我们将限制为十进制(以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。类型undefined+类型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))

最新更新