将数字求和直到它变成一位数 - JavaScript


在给定的问题陈述中,我们得到一个数字,我们需要将给定的数字求和,直到它变成一位数,并在 Javascript 中实现代码以获取所需的和。

理解问题

在给定的程序中,我们将有一个数字,我们的任务是重复求和它的数字,直到数字的结果变成一位数。例如,假设我们有一个像 874563 这样的数字,我们需要添加它所有的数字 (8 + 7 + 4 + 5 + 6 + 3 = 33),然后再次求和第一个结果的数字 (3 + 3 = 6)。最终答案是 6,它是给定数字的一位数。

给定问题的逻辑

在函数中,我们将输入一个数字,该函数的任务是重复求和它的数字,直到结果变成一位数。该函数将使用 while 循环来检查数字是否大于或等于 10。如果它大于 10,那么我们将使用 while 循环来计算各个数字的和。然后我们将使用一个变量来存储和,在将数字添加到和之后,数字将除以 10,并且我们将使用 Math.floor 函数向下取整以去除最后一位数字。最后,我们将最终返回一位数字作为结果。

算法

步骤 1:声明一个函数并为其命名为 sumToOneDigit,该函数接受一个数字作为参数。此函数将计算总和并将给定数字转换为一位数。

步骤 2:在上述函数内部,我们将使用 while 循环来检查给定数字是否大于或等于 10。这意味着我们将继续迭代数字,直到我们获得一位数作为结果。

步骤 3:如果数字大于 10,则我们将创建一个变量来存储和,并最初将其设置为 0。

步骤 4:通过使用嵌套 while 循环,我们将计算各个数字的和,在该循环内部,我们将数字的最后一位数字添加到 sum 变量中,此步骤将给出除以 10 时的余数,这将提取最后一位数字。

步骤 5:返回数字的值,该值将作为所需结果的一位数字。

示例

//Sum until the number is reduced to one digit
function sumToOneDigit(num) {
  while (num >= 10) {
   let sum = 0;
   while (num > 0) {
     sum += num % 10;
     num = Math.floor(num / 10);
   }
   num = sum;
  }
  return num;
}

const num = 987654321;
const result = sumToOneDigit(num);
console.log(result);

输出

9

复杂度

在代码中,我们使用了两个 while 循环,而 while 循环具有对数时间复杂度,因此此代码的时间复杂度为 O(log n),其中 n 是输入数字的大小。并且代码获取的空间为 O(1),因为消耗的内存量与输入大小无关。

结论

在代码中,我们解决了给定问题,即添加给定整数数字的数字,直到数字没有达到一位数。

更新于: 2023年8月16日

987 次查看

开启您的 职业生涯

通过完成课程获得认证

开始
广告