如何在 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 的更多資訊,您可以瀏覽這些 教程

更新於: 2022-08-29

3K+ 次檢視

啟動你的 職業生涯

透過完成課程獲得認證

開始
廣告

© . All rights reserved.