数字根排序算法 JavaScript

javascriptweb developmentobject oriented programming更新于 2025/10/1 14:04:17

某个正整数的数字根定义为其所有数字的总和。我们给出一个整数数组。我们必须以这样的方式对其进行排序:如果 a 位于 b 之前,并且 a 的数字根小于或等于 b 的数字根。如果两个数字具有相同的数字根,则较小的数字根(在常规意义上)应该排在前面。例如,4 和 13 具有相同的数字根,但是 4 < 13,因此在任何数字根排序中,如果两者都存在,则 4 位于 13 之前。

例如,

对于 a = [13, 20, 7, 4],
输出应为 [20, 4, 13, 7]。

让我们为这个问题编写代码−

我们将它分为两​​个函数,一个递归函数,计算数字的数字和,然后是一个排序函数,根据数字的总和对元素进行排序。

其代码为 −

示例

const arr = [54, 23, 8, 89, 26];
const recursiveCount = (num, count = 0) => {
   if(num){
      return recursiveCount(Math.floor(num/10), count+num%10);
   };
   return count;
};
const sorter = (a, b) => {
   const countDifference = recursiveCount(a) - recursiveCount(b);
   return countDifference || a - b;
};
arr.sort(sorter);
console.log(arr);

输出

控制台中的输出将是 −

[ 23, 8, 26, 54, 89 ]

相关文章


有用资源