js 数字和数字根的和实现方法

xiaoxiao2021-02-28  11

数字根是数字中所有数字的递归和。给定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; }
转载请注明原文地址: https://www.6miu.com/read-1650078.html

最新回复(0)