將數字求和直到它變成一位數 - 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),因為消耗的記憶體量與輸入大小無關。
結論
在程式碼中,我們解決了給定問題,即新增給定整數數字的數字,直到數字沒有達到一位數。
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP