[英]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;
將x
和y
都初始化為 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.