簡體   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