如何在 Golang 中查詢數字的階乘?
在本教程中,我們將編寫並解釋查詢 Golang 中數字階乘的程式碼。階乘是指將一個數字與其所有小於它的數字相乘的結果。在本教程中,我們將看到兩種在 Golang 中查詢階乘的方法。一種是建立遞迴函式。第二種是使用 for 迴圈。
例如,5 的階乘是
5! = 5 * 4 * 3 * 2 * 1 = 120
查詢數字階乘的遞迴方法
演算法
步驟 1 − 在步驟 1 中,我們聲明瞭要查詢其階乘的數字。資料型別為 int64,以便我們也可以儲存較大的階乘值。
步驟 2 − 現在我們將從使用者那裡獲取輸入並將其儲存到我們上面宣告的變數中。
步驟 3 − 現在我們將呼叫階乘函式,該函式將透過遞迴進行乘法來查詢階乘。
時間複雜度
O(N)
空間複雜度
O(1)
示例
在此示例中,我們將建立一個遞迴函式,該函式最終將返回該函式的階乘。
package main // fmt package provides the function to print anything import "fmt" func factorial(number int64) int64 { // if the number has reached 1 then we have to // return 1 as 1 is the minimum value we have to multiply with if number == 1 { return 1 } // multiplying with the current number and calling the function // for 1 lesser number factorialOfNumber := number * factorial(number-1) // return the factorial of the current number return factorialOfNumber } func main() { // declaring the integer number using the var keyword // whose factorial we have to find var number int64 // initializing the variable whose factorial we want to find number = 10 // calling the factorial() function and printing the factorial fmt.Println("The factorial of", number, "is", factorial(number)) fmt.Println("(Finding the factorial in a recursive manner.)") }
輸出
The factorial of 10 is 3628800 (Finding the factorial in a recursive manner.)
邏輯解釋
讓我們看看對於數字 6,函式呼叫是如何發生的。
第一個呼叫是 factorial(6),它返回 6 * factorial(5)。
現在在最後一個函式中呼叫了 factorial(5),它返回 5 * factorial(4)
在最後一個函式中呼叫了 factorial(4),它呼叫 4 * factorial(3)
在最後一個函式中呼叫了 factorial(3),它呼叫 3 * factorial(2)
在最後一個函式中呼叫了 factorial(2),它呼叫 2 * factorial(1)
在最後一個函式中呼叫了 factorial(1),它將返回 1,因為基本條件匹配,現在我們將以後進先出的方式移至最後一個函式呼叫。
現在 factorial(2) 返回 2 * 1 = 2
factorial(3) 返回 3 * 2 = 6
factorial(4) 返回 4 * 6 = 24
factorial(5) 返回 5 * 24 = 120
factorial(6) 返回 6 * 120 = 720
使用 for 迴圈查詢數字階乘的方法
演算法
步驟 1 − 在步驟 1 中,我們聲明瞭要查詢其階乘的數字。資料型別為 int64,以便我們也可以儲存較大的階乘值。
步驟 2 − 現在我們將從使用者那裡獲取輸入並將其儲存到我們上面宣告的變數中。
步驟 3 − 現在我們將執行 for 迴圈來查詢階乘
示例
在此示例中,我們將使用 for 迴圈來查詢使用者作為輸入提供的數字的階乘。
package main // fmt package provides the function to print anything import "fmt" func main() { // declaring the integer number using the var keyword // whose factorial we have to find var number, iterator int64 // initializing the variable whose factorial we want to find number = 9 // declaring the answer variable of int64 type and initializing with 1 var answer int64 = 1 // Running the for loop to find the factorial for iterator = 1; iterator <= number; iterator++ { answer = answer * iterator } // Printing the factorial of the respective number fmt.Println("The factorial of", number, "is", answer) fmt.Println("(Finding the factorial using for loop.)") }
輸出
The factorial of 9 is 362880 (Finding the factorial using for loop.)
邏輯解釋
讓我們看看如何在查詢等於 6 的數字的階乘時使用 for 迴圈。
在第一次迭代中,我們將答案乘以 1,因此 answer = 1 * 1 = 1。
在第二次迭代中,我們將答案乘以 2,因此 answer = 1 * 2 = 2。
在第三次迭代中,我們將答案乘以 3,因此 answer = 2 * 3 = 6。
在第四次迭代中,我們將答案乘以 4,因此 answer = 6 * 4 = 24。
在第五次迭代中,我們將答案乘以 5,因此 answer = 24 * 5 = 120。
在第六次迭代中,我們將答案乘以 6,因此 answer = 120 * 6 = 720。
結論
這就是我們如何使用 for 迴圈找到 6! 的值,即 720。這是查詢數字階乘的兩種不同方法。要了解有關 go 的更多資訊,您可以瀏覽這些 教程。
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP