Swift程序:求解数字阶乘


本教程将讨论如何编写一个Swift程序来计算数字的阶乘。

非负数的阶乘是通过将该数字与每个整数(直到1)相乘来计算的,例如,6! = 6 x 5 x 4 x 3 x 2 x 1 = 720,这意味着6的阶乘是720。

阶乘的一般形式为:

M! = m x (m - 1) x (m - 2) x (m - 3) …. X 1

公式

以下是阶乘的公式:

M! = M * (M - 1)!

以下是相同的演示

假设我们的输入是:

Enter the number - 10

以下是期望的输出,因为10! = 10 x 9 x 8 x 7 x 6 x 5 x 4 x 3 x 2 x 1

Final result - 3628800

我们可以使用以下任何一种方法来计算数字的阶乘:

使用递归计算阶乘

我们可以使用递归来计算阶乘。递归是一个函数调用自身来解决问题的过程。

算法

  • 步骤1 - 创建一个函数

  • 步骤2 - 使用if语句检查给定数字是否为0,如果是则返回1。否则,通过自身调用返回阶乘。

  • 步骤3 - 声明一个变量,其值可以是预定义的或用户定义的。

  • 步骤4 - 调用函数并将定义的变量作为参数传递给它。

  • 步骤5 - 打印输出。

示例

以下程序展示了如何使用递归计算数字的阶乘:

import Foundation import Glibc func factorialValue(fNumber: Int) -> Int{ if fNumber == 0{ return 1 } else { return fNumber * factorialValue(fNumber:fNumber-1) } } var value = 4 var output = factorialValue(fNumber: value) print("Number is \(value)") print("So the factorial is \(output)")

输出

Number is 4
So the factorial is 24

在上面的代码中,我们创建了一个名为factorialValue()的递归函数。该函数最初以value = 4作为参数调用。在这个函数中,我们首先检查给定的数字是否为0,这是停止递归函数的基本条件。如果给定的数字不是0,则将通过将该数字与函数本身相乘来找到该数字的阶乘,直到fNumber变为0。

return fNumber * factorialValue(fNumber:fNumber-1)

这里,函数通过将fNumber减1来调用自身,这个过程将持续到fNumber的值变为0。因此,factorialValue()函数的工作方式是:

1st function call with 4: factorialValue(4) = 4 * factorialValue(3)
2nd function call with 3: factorialValue(3) = 3 * factorialValue(2)
3rd function call with 2: factorialValue(2) = 2 *  factorialValue(1)
4th function call with 1: factorialValue(1)  = 1 *  factorialValue(0)
5th function call with 0: factorialValue(0) = 1(According to our condition the function return 1 when fNumber is 0)
Returned from 5th function call: 1
Returned from 4th function call: 1 * 1 = 1
Returned from 3rd function call: 2 * 1 = 2
Returned from 2nd function call: 3 * 2 = 6
Returned from 1st function call: 4 * 6 = 24
Display the factorial of 4 which is 24.

使用for循环计算阶乘

我们可以使用for循环来计算数字的阶乘。迭代方法比递归方法便宜得多。

算法

算法解释如下:

  • 步骤1 - 创建一个函数

  • 步骤2 - 声明一个值为output = 1的变量。

  • 步骤3 - 使用if语句检查给定数字是否大于1。

  • 步骤4 - 使用for循环迭代从1到给定数字的范围并找到阶乘。

  • 步骤5 - 声明一个变量,其值可以是预定义的或用户定义的。

  • 步骤6 - 调用函数并将定义的变量作为参数传递给它。

  • 步骤7 - 打印输出。

示例

以下程序展示了如何使用for循环计算数字的阶乘:

import Foundation import Glibc func factorialValue(fNumber: Int) -> Int{ var output = 1 if (fNumber > 1) { for j in 1...fNumber{ output *= j } } return output } var value = 3 var output = factorialValue(fNumber: value) print("Number is \(value)") print("So the factorial is \(output)")

输出

Number is 3
So the factorial is 6

在上面的代码中,我们创建了一个名为factorialValue()的函数。在这个函数中,我们创建了一个名为output的变量,其值为1,这个变量存储最终的输出。现在我们使用if语句检查给定的数字是否大于1,当条件为真时,控制将进入for循环,范围从1到fNumber,通过将数字与其较小的数字相乘来找到给定数字的阶乘,并返回最终的输出。现在我们创建一个名为“value”的变量,其值为3。现在我们调用factorialValue()函数并将“value”变量作为参数传递给函数,并将结果赋值给“output”变量,并显示3的阶乘,即6。

使用while循环计算阶乘

我们可以使用while循环来计算数字的阶乘,因为与递归方法相比,迭代方法更便宜。

算法

算法解释如下:

  • 步骤1 - 创建一个函数

  • 步骤2 - 声明两个变量,其值为output *= 1和k = 1。

  • 步骤3 - 使用条件k <= fNumber运行while语句并找到阶乘。

  • 步骤4 - 声明一个变量,其值可以是预定义的或用户定义的。

  • 步骤5 - 调用函数并将定义的变量作为参数传递给它。

  • 步骤6 - 打印输出。

示例

以下程序展示了如何使用while循环计算数字的阶乘:

import Foundation import Glibc func factorialValue(fNumber: Int) -> Int{ var output = 1 var k = 1 while(k <= fNumber){ output *= k k += 1 } return output } var value = 8 var output = factorialValue(fNumber: value) print("Number is \(value)") print("So the factorial is \(output)")

输出

Number is 8
So the factorial is 40320

在上面的代码中,我们创建了一个名为factorialValue的函数。在这个函数中,我们创建了两个名为output *= 1和k = 1的变量。现在使用条件k <= fNumber运行while循环。这个循环一直运行到给定的条件为真,并找到该数字的阶乘。现在我们创建一个名为“value”的变量,其值为8。现在我们调用factorialValue()函数并将“value”变量作为参数传递给函数,并将结果赋值给“output”变量,并显示8的阶乘,即40320。

更新于:2022年8月5日

4K+浏览量

开启您的职业生涯

通过完成课程获得认证

开始学习
广告