python入门学习——6种方法求n的阶乘(8种写法)
一、阶乘(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种写法)相关推荐
- Python入门学习——程序设计基本方法
程序设计语言也叫编程语言,经历了机器语言.汇编语言到高级语言3个阶段.其中,机器语言和汇编语言都是直接操作计算机硬件的编程语言. 每个程序都有自己的运算模式:输入数据.处理数据和输出数据.我们称为IP ...
- C语言程序设计之四种方法求n的阶乘
方式一:用while循环从1到n #include<stdio.h> int main(){int i=1,ret=1,n;//定义三个变量并给i,ret赋值scanf("%d& ...
- Python入门学习---第四天
面向对象编程 类和实例 概念与其他面向对象编程语言类似. 以Student类为例,在Python中,定义类是通过class关键字: class Student(object):pass (object ...
- Python入门学习之异常处理机制
异常即是一个事件,该事件会在程序执行过程中发生影响程序的正常执行.python提供了两个非常重要的功能来处理python程序在运行中出现的异常和错误.今天的Python入门学习课程就给大家讲解一下异常 ...
- Python入门学习笔记1-Python基础
Python入门学习笔记1-Python基础 前言:本文介绍了Python学习的前导知识概念以及必记基础函数,如善用help方法查看帮助文档,以及内置对象类型的概念以及常用函数的详解. 一.Pytho ...
- python速成要多久2019-8-28_2019最全Python入门学习路线,不是我吹,绝对是最全
近几年Python的受欢迎程度可谓是扶摇直上,当然了学习的人也是愈来愈多.一些学习Python的小白在学习初期,总希望能够得到一份Python学习路线图,小编经过多方汇总为大家汇总了一份Python学 ...
- 自学python推荐书籍2019-2019最全Python入门学习路线,不是我吹,绝对是最全
近几年Python的受欢迎程度可谓是扶摇直上,当然了学习的人也是愈来愈多.一些学习Python的小白在学习初期,总希望能够得到一份Python学习路线图,小编经过多方汇总为大家汇总了一份Python学 ...
- python入门视频教程推荐-python入门学习哪个书比较好(python视频教程知乎)
自学python的学习路线是什么?推荐一些python学习资源 第一段 初级,掌握Python的语法和常用库的使用 这里首先推雪锋在网上的书籍,这是Python2.7的,这本书适合于重头开始一直读完, ...
- 字字谏言!Python入门学习教程:关于Python不得不说的事儿
作为程序员,你肯定遇到过这样的领导: "别人还没走,你先走了不合适吧." "不能确定功劳,总得有苦劳吧!你看别人9点谁走了?" 说到996,这很有可能是诱因之一 ...
- Python入门学习指南--内附学习框架
Python入门学习指南 原文链接:https://blog.csdn.net/weixin_44558127/article/details/86527360 最近开始整理python的资料,博主建 ...
最新文章
- c++ const 关键字 学习笔记
- (C++)从本机获取WMI数据.
- TypeScript学习笔记(七) - 命名空间
- 和远程ip_【漏洞预警】Windows TCP/IP远程执行代码漏洞(CVE202016898)
- 代码实现sql编译器_TiDB-Wasm 原理与实现 | Hackathon 优秀项目介绍
- 要求做一个从网页上导入excel
- 一文弄懂什么是Istio
- 如果$.ajax函数迟迟得不到响应,那么最有可能出错的地方是请求参数写错了
- 系统集成管理师2011下半年软考透解 四
- HTML 5 会让iOS和Android开发者转行吗?
- 手把手教你学单片机,学完马上能自己编写开发程序
- 5.FlashFXP连接失败(连接已拒绝)及530 permission denied(以root用户连接已被客户端关闭)
- 加性零均值高斯噪声的产生与信噪比SNR的计算
- CSDN/博客园复制代码空格报错问题解决
- 汉明码纠错java_汉明码纠错的基本原理及优化解决方案
- 树莓派python图形化编程_BlockPi: 树莓派图形化编程软件,轻松控制GPIO、SenseHAT、Picamera等硬件。...
- Linux进程间关系之守护进程
- SEAL全同态加密开源库(十二) CKKS-源码浅析
- 2020腾讯阅文集团-前端笔试题
- 波的相关参数概念整理
热门文章