一、阶乘(factorial)

自然数n!(n的阶乘)是指从1、2……(n-1)、n这n个数的连乘积,即
n!=n×(n-1)×……2×1

如:
1! = 1 =1
2!= 2 * 1 = 2
3!= 3 * 2 * 1 = 6
4! = 4 * 3 * 2 * 1 = 24
5!= 5 * 4 * 3 * 2 * 1 = 120

了解了阶乘的基本概念之后,构思时间…,之后我们一起来编程实现一下(递归方法会着重讲解):

二、编程求解

1、普通的for循环语句来计算阶乘
 #函数实现def factorial(num):a=1#for循环遍历for i in range(1,num+1):a*=ireturn an = int(input())print(factorial(n))

2、while循环语句来计算阶乘
#输入n的值
n=int(input())
ans=n
i=1
if n ==0:print(1)
else:#while循环while i <n:                                              ans=ans*i                                            i=i+1                                               print(ans)        

3、使用递归函数

我们小时候或多或少应该听说这个故事:“从前有座山,山里有座庙,庙里有个老和尚和小和尚,老和尚给小和尚讲故事:从前有座山,山里有座庙……”,长大之后,仔细想想,怎么兜兜转转,这不是在"套娃"儿吗?

仔细想想,这些好像跟递归有点儿像啊,“自己调用自己”
简单了解了递归之后,我们可以去用递归写一下试试,写法如下:

1️⃣写法一

#函数实现
def factorial(n):if n==0:return 1else:#递归调用return factorial(n-1)*nn = int(input())
print(factorial(n))

2️⃣写法二

#函数实现
def factorial(n):#三元运算表达式return 1 if n < 2 else n * factorial(n - 1)#输入n的值
n = int(input())
print(factorial(n))

【注:三元运算表达式,语法:为真时的结果 if 判定条件 else 为假时的结果】


震惊我汪一整年,还能这样写?请看下图:
以用递归的方法求5的阶乘为例:


看完这张图有没有感觉对递归认识清晰了一些?当然如仍有困惑,可评论回复,博主看到后会尽快做出答复。

4、借助functools中的reduce模块

1️⃣写法一

#导入functools
import functools
#输入n的值
n = int(input())
#lambda函数+reduce模块
result = (lambda k: functools.reduce(int.__mul__, range(1, k + 1), 1))(n)
print(result)

【 注:Lambda是一种不需要名字(即标识符)、由一个单独表达式成的匿名内联函数,表达式会在调用时被求值。
创建 lambda 函数的语法为:lambda [parameters]: expression 】

2️⃣写法二

#从functools中导入reduce
from functools import reduce
#函数实现
def factorial(num):return reduce(lambda x,y:x*y,range(1,num+1))#输入n的值
n = int(input())
print(factorial(n))

5、借助math库,使用math库的factorial方法
#导入math模块
import math
#函数实现
def fact(num):#借助math模块中的factorial方法return math.factorial(num)#输入n的值
n = int(input())
print(fact(n))

【注:Python math.factorial(x) 方法返回 x 的阶乘。】

6、使用eval适配表达式
#函数实现
def fact(num):#eval适配表达式实现return eval('*'.join(map(str,range(1,num+1))))#输入n的值
n = int(input())
print(fact(n))

【注:eval() 函数用来执行一个字符串表达式,并返回表达式的值。
eval() 方法的语法:eval(expression[, globals[, locals]]) 】

Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder

python入门学习——6种方法求n的阶乘(8种写法)相关推荐

  1. Python入门学习——程序设计基本方法

    程序设计语言也叫编程语言,经历了机器语言.汇编语言到高级语言3个阶段.其中,机器语言和汇编语言都是直接操作计算机硬件的编程语言. 每个程序都有自己的运算模式:输入数据.处理数据和输出数据.我们称为IP ...

  2. C语言程序设计之四种方法求n的阶乘

    方式一:用while循环从1到n #include<stdio.h> int main(){int i=1,ret=1,n;//定义三个变量并给i,ret赋值scanf("%d& ...

  3. Python入门学习---第四天

    面向对象编程 类和实例 概念与其他面向对象编程语言类似. 以Student类为例,在Python中,定义类是通过class关键字: class Student(object):pass (object ...

  4. Python入门学习之异常处理机制

    异常即是一个事件,该事件会在程序执行过程中发生影响程序的正常执行.python提供了两个非常重要的功能来处理python程序在运行中出现的异常和错误.今天的Python入门学习课程就给大家讲解一下异常 ...

  5. Python入门学习笔记1-Python基础

    Python入门学习笔记1-Python基础 前言:本文介绍了Python学习的前导知识概念以及必记基础函数,如善用help方法查看帮助文档,以及内置对象类型的概念以及常用函数的详解. 一.Pytho ...

  6. python速成要多久2019-8-28_2019最全Python入门学习路线,不是我吹,绝对是最全

    近几年Python的受欢迎程度可谓是扶摇直上,当然了学习的人也是愈来愈多.一些学习Python的小白在学习初期,总希望能够得到一份Python学习路线图,小编经过多方汇总为大家汇总了一份Python学 ...

  7. 自学python推荐书籍2019-2019最全Python入门学习路线,不是我吹,绝对是最全

    近几年Python的受欢迎程度可谓是扶摇直上,当然了学习的人也是愈来愈多.一些学习Python的小白在学习初期,总希望能够得到一份Python学习路线图,小编经过多方汇总为大家汇总了一份Python学 ...

  8. python入门视频教程推荐-python入门学习哪个书比较好(python视频教程知乎)

    自学python的学习路线是什么?推荐一些python学习资源 第一段 初级,掌握Python的语法和常用库的使用 这里首先推雪锋在网上的书籍,这是Python2.7的,这本书适合于重头开始一直读完, ...

  9. 字字谏言!Python入门学习教程:关于Python不得不说的事儿

    作为程序员,你肯定遇到过这样的领导: "别人还没走,你先走了不合适吧." "不能确定功劳,总得有苦劳吧!你看别人9点谁走了?" 说到996,这很有可能是诱因之一 ...

  10. Python入门学习指南--内附学习框架

    Python入门学习指南 原文链接:https://blog.csdn.net/weixin_44558127/article/details/86527360 最近开始整理python的资料,博主建 ...

最新文章

  1. c++ const 关键字 学习笔记
  2. (C++)从本机获取WMI数据.
  3. TypeScript学习笔记(七) - 命名空间
  4. 和远程ip_【漏洞预警】Windows TCP/IP远程执行代码漏洞(CVE202016898)
  5. 代码实现sql编译器_TiDB-Wasm 原理与实现 | Hackathon 优秀项目介绍
  6. 要求做一个从网页上导入excel
  7. 一文弄懂什么是Istio
  8. 如果$.ajax函数迟迟得不到响应,那么最有可能出错的地方是请求参数写错了
  9. 系统集成管理师2011下半年软考透解 四
  10. HTML 5 会让iOS和Android开发者转行吗?
  11. 手把手教你学单片机,学完马上能自己编写开发程序
  12. 5.FlashFXP连接失败(连接已拒绝)及530 permission denied(以root用户连接已被客户端关闭)
  13. 加性零均值高斯噪声的产生与信噪比SNR的计算
  14. CSDN/博客园复制代码空格报错问题解决
  15. 汉明码纠错java_汉明码纠错的基本原理及优化解决方案
  16. 树莓派python图形化编程_BlockPi: 树莓派图形化编程软件,轻松控制GPIO、SenseHAT、Picamera等硬件。...
  17. Linux进程间关系之守护进程
  18. SEAL全同态加密开源库(十二) CKKS-源码浅析
  19. 2020腾讯阅文集团-前端笔试题
  20. 波的相关参数概念整理

热门文章

  1. 微信视频号如何申请认证,流程是什么?
  2. 如何学习计算机网络——学习方法
  3. win10双显卡怎么切换amd和英特尔_win10系统双显卡切换到独立显卡的操作方法
  4. html5 live,HTML5 live streaming
  5. Python高级数据处理与可视化
  6. Blender建模06
  7. 《东周列国志》第四十六回 楚商臣宫中弑父 秦穆公崤谷封尸
  8. win10天气是英文的
  9. 程序员值得看的电影(20170420EDIT)
  10. 关于数字万用表你需要知道的知识