当前位置:

首页 > 编程开发 > Python如何计算数学阶乘n!

Python如何计算数学阶乘n!

python实现阶乘-基础版本什么是阶乘呢?在数学运算中n!表示n的阶乘,用数学公式表示为:n!=1*2*3*....*(n-1)*n下面提供了一个例子:比如5的阶乘#正确的结果1*2*3*4*5正确结果为:120小编给大家提供3种不同的方法来实现阶乘运算:基于for运算的累乘基于递归函数实现基于第三方库functools的reduce函数实现方式1-累乘result=1#给定一个初始值n=5foriinrange(1,n+1):print("累乘前result:",result)print("循环数i的

本文目录

    python实现阶乘-基础版本

    什么是阶乘呢?

    在数学运算中n!表示n的阶乘,用数学公式表示为:

    n!=1*2*3*....*(n-1)*n

    下面提供了一个例子:比如5的阶乘

    # 正确的结果
    
    1*2*3*4*5

    正确结果为:120

    小编给大家提供3种不同的方法来实现阶乘运算:

    • 基于for运算的累乘

    • 基于递归函数实现

    • 基于第三方库functools的reduce函数实现

    方式1-累乘

    result = 1  # 给定一个初始值
    n = 5
    
    for i in range(1, n+1):
        print("累乘前result: ", result)
        print("循环数i的值: ", i)
        result = result * i  # 不断地累成result
        print("累乘后result: ", result)
        print("------------")
    
    result

    累乘前result:  1
    循环数i的值:  1
    累乘后result:  1
    ------------
    累乘前result:  1
    循环数i的值:  2
    累乘后result:  2
    ------------
    累乘前result:  2
    循环数i的值:  3
    累乘后result:  6
    ------------
    累乘前result:  6
    循环数i的值:  4
    累乘后result:  24
    ------------
    累乘前result:  24
    循环数i的值:  5
    累乘后result:  120
    ------------

    结果是:120

    方式2-使用递归函数

    def recursion(n):
        if n == 0 or n == 1:  # 特殊情况
            return 1
        else:
            return n * recursion(n-1)  # 递归函数
    recursion(5)

    120

    方式3-第三方库functools的reduce函数

    # 在python3中reduce函数被移入到functools中;不再是内置函数
    
    from functools import reduce 
    
    n = 5
    
    reduce(lambda x,y: x*y, range(1,n+1))

    120

    reduce函数的用法解释:

    reduce(function, iterable[, initializer])
    • 需要给定一个待执行的函数function(上面是匿名函数;或者自定义函数)

    • 给定一个可迭代对象iterable

    • 可选的初始值initializer

    # 使用自定义函数
    
    from functools import reduce 
    
    number = range(1,6)
    # number = [1,2,3,4,5]
    
    def add(x,y):
        return x+y
    
    reduce(add, number)  # 1+2+3+4+5

    15

    # 使用匿名函数
    
    from functools import reduce 
    
    number = range(1,6)
    
    reduce(lambda x,y: x+y, number)  # 1+2+3+4+5

    15

    python实现阶乘累加求和-进阶版

    下面是一个进阶的需求:如何实现阶乘的累加求和?

    # 求出下面的阶乘的累加求和
    
    1 + 1*2 + 1*2*3 + 1*2*3*4 + 1*2*3*4*5

    正确结果是153

    方式1-累乘+sum

    # 定义累乘函数
    
    def func(n):
        result = 1
        
        for i in range(1, n+1):
            result = result * i  # 不断地累成re
              
        return result
        
    func(5)  # 测试案例

    120

    上面是我们实现的单个数字的阶乘,放入for循环即可求累计求和:

    # func(1) + func(2) + func(3) +  func(4) + func(5)
    
    # 调用累乘函数
    sum(func(i)  for i in range(1,6))

    153

    方式2-累乘+递归

    在一个函数中同时使用累乘和递归函数

    # 定义累乘函数
    
    def func(n):
        result = 1  # 定义初始值
        
        for i in range(1, n+1):
            result = result * i  # 不断地累成re
        
        # if result == 1 :  等价于下面的条件
        if n==0 or n==1:
            return 1
        else:  # 下面是关键代码
            return result + func(n-1)  #在这里实现递归 func(n-1)
        
    func(5)

    153

    方式3-递归+sum

    def recursion(n):
        """
        之前定义的递归函数
        """
        if n == 0 or n == 1:
            return 1
        else:
            return n * recursion(n-1)

    调用递归函数在基于for循环和sum求和

    # recursion(1) + recursion(2) + recursion(3) +  recursion(4) + recursion(5)
    
    # 调用定义的递归函数
    sum(recursion(i)  for i in range(1,6))

    153

    方式4-reduce 结合 sum

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

    120

    单次调用reduce函数,结合for循环和sum求和

    sum(reduce(lambda x,y: x*y, range(1,n+1)) for n in range(1,6))

    153

    方式5-两次reduce函数

    [reduce(lambda x,y: x*y, range(1,n+1)) for n in range(1,6)]

    [1, 2, 6, 24, 120]

    将上面的结果作为可迭代的列表再次传入reduce函数,此时的执行函数是两个元素的求和(x+y):

    reduce(lambda x,y:x+y, [reduce(lambda x,y: x*y, range(1,n+1)) for n in range(1,6)] )

    153

    Python如何计算数学阶乘n!

    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
    作者最新文章
    编程开发 Python
    相关文章 更多
    python删除一个列表里的重复元素的方法与代码示例
    python删除一个列表里的重复元素的方法与代码示例

    学习如何使用Python高效删除列表中的重复元素。本文提供5种常见方法的代码示例,涵盖保持顺序与不保持顺序的场景,适合初学者和进阶开发者参考。

    Python写接口的步骤及完整代码示例
    Python写接口的步骤及完整代码示例

    详细讲解使用Python编写Web接口的核心步骤与完整代码示例,涵盖环境准备、路由定义、数据校验、服务启动及调试测试方法。

    codex怎么读取word文档及docx文件操作教程
    codex怎么读取word文档及docx文件操作教程

    介绍如何利用编程工具读取和解析Word文档(docx格式),涵盖基础文本提取代码示例、结构化数据处理逻辑,以及处理复杂排版时的技术局限与替代方案。

    怎么在Python中调用C语言代码提升性能
    怎么在Python中调用C语言代码提升性能

    详细讲解在Python中调用C语言代码提升性能的完整实践指南,包含原理分析、编译步骤、ctypes与CFFI具体实现、性能对比及常见陷阱。

    Python与C语言的性能差异及底层原理
    Python与C语言的性能差异及底层原理

    深入解析Python与C语言在执行效率上的数量级差异,从编译机制、变量内存布局、动态类型推断到GIL锁,系统阐明底层核心原理。

    Python和C语言哪个更适合编程入门
    Python和C语言哪个更适合编程入门

    客观对比Python与C语言在心智负担、底层机制与学习反馈上的核心差异,提供清晰有据的选择标准与切实的入门学习路径。

    selenium上传文件教程本地文件路径设置方法
    selenium上传文件教程本地文件路径设置方法

    深入解析Selenium处理文件上传的技术细节,涵盖标准HTML控件的路径直接注入法与非标准控件的系统级模拟方案,提供Windows与Linux环境下的路径设置最佳实践及常见异常排查。

    大数据开发语言选型:Java对比Scala与Python的优缺点及适用场景
    大数据开发语言选型:Java对比Scala与Python的优缺点及适用场景

    针对大数据工程场景,系统对比Java、Scala与Python在执行性能、生态结合、开发效率和维护成本上的核心差异,给出清晰的架构选型依据与落地方案。

    langgraph python guide中文入门教程详解
    langgraph python guide中文入门教程详解

    本篇LangGraph Python中文入门教程详解,系统梳理StateGraph状态机定义、节点编写、边与条件路由、检查点持久化(MemorySaver)等核心机制,提供从环境安装到完整循环智能体构建的代码示例与实操指导。

    Windows 安装 Python:从官方入口到虚拟环境的可复现实践
    Windows 安装 Python:从官方入口到虚拟环境的可复现实践

    面向后端开发者,基于 Python 官方文档说明如何在 Windows 上安装 Python、创建 venv 虚拟环境及使用 pip 管理依赖。包含可复制命令、验证方法及工具选择边界,避免常见配置误区。

    查看更多
    精品专题 更多
    装机必备
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows
    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    PDF教程
    PDF教程

    正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

    Mac软件 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    Aperty macOS版
    Aperty macOS版
    macOS

    Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

    WINDOWS 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    PixTV 网页版
    PixTV 网页版
    Windows

    PixTV 是一款在浏览器中使用的 AI 视觉内容创作平台,提供图片、视频、音频、文字生成、AI 分镜、局部重绘、提示词反推和无限画布等工具,适合短剧、漫剧、广告及社交媒体内容制作。