将数字求和直到它变成一位数 - 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),因为消耗的内存量与输入大小无关。
结论
在代码中,我们解决了给定问题,即添加给定整数数字的数字,直到数字没有达到一位数。