• 阶乘(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 的阶乘。

    1. import math
    2. n = 5 # 需要计算阶乘的数字
    3. factorial = math.factorial(n)
    4. print(factorial) # 输出结果为 120

    (二)for循环语句

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

    1. def fact(n):
    2. s = 1
    3. for i in range(1,n+1):
    4. s*= i
    5. return s
    6. print(fact(5))

    (三)reduce函数

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

    reduce() 函数语法:

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

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

    • iterable -- 可迭代对象

    • initializer -- 初始参数,可选

    1. from functools import reduce
    2. n = 5
    3. 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)的阶乘又可以继续递归拆分。

    1. def factorial(n):
    2. if n == 0 or n == 1:
    3. return 1
    4. else:
    5. return (n*factorial(n-1))
    6. a = factorial(5)
    7. print(a)

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

  • 相关阅读:
    JSP连接MySQL数据库
    springboot整合log4j2
    CF125E. MST Company详细解答
    《Fundamantals of Software Architecture》 Q&A Part2
    [Spring Framework]AOP配置管理②(AOP通知类型)
    python(进阶篇)——自动化操作Excel(xlrd和xlwt)
    Java Hash 碰撞
    【设计模式】外观模式
    桥接模式:解耦抽象与实现,实现灵活多变的扩展结构
    【vue3源码】三、effectScope源码解析
  • 原文地址:https://blog.csdn.net/greatau/article/details/133999037