码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 阶乘(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判断语句来终止循环的进行。

  • 相关阅读:
    【K8S系列】第九讲:Kubernetes 之探针
    SpringBoot - 使用maven-assembly-plugin插件将项目打包为.tar.gz格式的压缩包(一)
    深入React源码揭开渲染更新流程的面纱
    Kotlin学习——hello kotlin & 函数function & 变量 & 类 + 泛型 + 继承
    【喜报】冲量在线荣获首届“创领浦东”创新创业大赛三等奖!
    Mach Systems—总线接口转换工具
    【蓝桥杯第十三届省赛B组】(部分详解)
    python super()详解,一篇文章告诉你python的super是什么,如何使用
    Google Earth Engine APP——影像条带色差、色调不均匀等现象解决方案Landsat5 NDWI Image Restoration APP
    前端axios下载导出文件工具封装
  • 原文地址:https://blog.csdn.net/greatau/article/details/133999037
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号