JavaScript 中破坏性地求数字所有数字之和


我们的主要任务是编写函数,借助 Javascript 破坏性地求数字所有数字之和。为此,我们将使用 while 循环和一个函数来获取所需的输出。

理解问题陈述

问题是创建一个函数来计算给定数字中所有数字的总和。这意味着我们给定一个数字,并且必须以破坏性的方式计算该数字中所有数字的总和,因为在此过程中原始数字会被修改。

例如,假设我们有一个数字 123。因此,我们需要计算此数字中给定数字的总和 1 + 2 + 3 = 6。

因此,我们的目标是编写一个可以满足上述要求计算总和的算法。

上述问题的逻辑

为了解决这个问题,我们将使用 while 循环来持续提取输入数字的最右边的数字(借助模运算符),并将其添加到运行总和数字中。然后,我们将通过将数字除以 10 并使用 Math.floor 方法将其向下取整来删除最右边的数字。我们将重复此过程,直到提取给定数字的所有数字并将其添加到数字的总和中。因此,在那个时间点,我们可以返回最终的总和。

算法

步骤 1 − 创建一个函数来计算给定数字的数字总和,并将其命名为 getDigitSum 并传递一个名为 num 的参数。

步骤 2 − 定义一个变量来存储数字给定数字的总和,并将其命名为 sum。

步骤 3 − 使用 while 循环来验证条件并相应地进行处理。并在循环内部检查给定数字是否大于零。

步骤 4 − 我们将借助模运算符和 Math.floor 方法计算 sum 和 num。

步骤 5 − 在循环外部,我们将返回计算出的数字总和。

算法代码

//function to calculate the sum of all the digits
function getDigitSum(num) {
   let sum = 0;
   while (num > 0) {
      sum += num % 10;
      num = Math.floor(num / 10);
   }
   return sum;
}
const num = 123456;
const digitSum = getDigitSum(num);
console.log(digitSum);  

复杂度

生成的函数花费的时间为 O(log n),其中 n 是给定数字的值。这是因为 while 循环中的迭代次数与数字中的数字位数成正比。并且该算法的空间复杂度为 O(1),即常数,因为它仅使用恒定数量的额外空间来存储 sum。

结论

上述函数为使用 Javascript 编程语言查找数字所有数字之和提供了一种有效的解决方案。在代码中,我们重复了该过程,直到提取所有数字并将其添加到当前总和中。

更新于: 2023-05-18

534 次查看

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告

© . All rights reserved.