如何在 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+ 次查看

启动你的 职业生涯

通过完成课程获得认证

开始
广告