1. 程式人生 > >js 數字和數字根的和實現方法

js 數字和數字根的和實現方法

數字根是數字中所有數字的遞迴和。給定n,取n的數字的和,如果該值有兩位數字,繼續以這種方式減少,直到產生一位數。這隻適用於自然數。

實現邏輯:

digital_root(16)
=> 1 + 6
=> 7

digital_root(942)
=> 9 + 4 + 2
=> 15 ...
=> 1 + 5
=> 6

digital_root(132189)
=> 1 + 3 + 2 + 1 + 8 + 9
=> 24 ...
=> 2 + 4
=> 6

digital_root(493193)
=> 4
+ 9 + 3 + 1 + 9 + 3 => 29 ... => 2 + 9 => 11 ... => 1 + 1 => 2

實現程式碼一:

function digital_root(n) {
  return (n - 1) % 9 + 1;
}

實現程式碼二:

function digital_root(n) {
  if (n < 10) return n;

  return digital_root(
    n.toString().split('').reduce(function(acc, d) { return acc + +d; }, 0
)); }

實現程式碼三:

function digital_root(n) {
  if (n < 10)
    return n;

  for (var sum = 0, i = 0, n = String(n); i < n.length; i++)
    sum += Number(n[i]);

  return digital_root(sum);
}

實現程式碼四:

function digital_root(n) {
  let newn = 0;
  if(n >= 10){
    for(let i=0;i< n.toString().length;i++){
      newn += Number
(n.toString()[i]); } } return newn >= 10?digital_root(newn):newn; }