阶乘(Python)

一、定义

整数的阶乘(英语:factorial)是所有小于及等于该数的正整数的积,0的阶乘为1。即:n!=1×2×3×...×n

二、方法说明

python求整数n阶乘的方法:

1、使用math模块factorial(n)来计算n的阶乘

2、for循环语句

3、使用reduce()函数来求阶乘

4、通过递归函数来求阶乘

三、求解方法

(一)math.factorial(n)求解法

(1)math库是python提供的内置数学类函数库,math库仅支持整数和浮点数运算,一共提供了4个数字常数和44个函数。其中factorial(n)——以一个整数返回 n 的阶乘。

import math

n = 5 # 需要计算阶乘的数字

factorial = math.factorial(n)

print(factorial) # 输出结果为 120

(二)for循环语句

循环算法是另一种常用的算法思想,它可以通过循环迭代来解决问题。对于n的阶乘,可以使用循环算法来进行计算。具体来说,可以使用一个循环变量i从1到n,依次将i与前面的乘积相乘。

def fact(n):
    s = 1
    for i in range(1,n+1):
        s*= i
    return s

print(fact(5))

(三)reduce函数

函数将一个数据集合(链表,元组等)中的所有数据进行下列操作:用传给 reduce 中的函数 function(有两个参数)先对集合中的第 1、2 个元素进行操作,得到的结果再与第三个数据用 function 函数运算,最后得到一个结果。

reduce() 函数语法:

reduce(function, iterable[, initializer]),其中:

  • function -- 函数,有两个参数

  • iterable -- 可迭代对象

  • initializer -- 初始参数,可选

from functools import reduce
n = 5
print(reduce(lambda x,y:x*y,range(1,n+1)))

这里我们用的是lambda表达式(匿名函数),带两个参数x、y,x就是每次操作后的返回值,参数y就是代表集合range(1,n+1)中的元素。

(四)递归调用

在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。

递归算法是一种常用的算法思想,它可以通过将一个问题分解为若干个子问题来解决。对于n的阶乘,使用递归算法来进行计算。具体来说,可以将n的阶乘拆分为n×(n-1)的阶乘,而(n-1)的阶乘又可以继续递归拆分。

def factorial(n):
    if n == 0 or n == 1:
        return 1
    else:
        return (n*factorial(n-1))
a = factorial(5)
print(a)

函数的递归要有终止机制,否则会一直递归下去。如上个程序中给定了if判断语句来终止循环的进行。

你可能感兴趣的:(计算机等级二级Python,算法,python,开发语言,全国计算机等级考试)