Python 阶乘详解


Posted in Python onOctober 05, 2021

相信大家对阶乘都不陌生。不知道阶乘的可以看这里:

一个数的阶乘:

Python 阶乘详解

比如5的阶乘

Python 阶乘详解

在python中大部分教程一般推荐用递归函数完成:

#!/usr/bin/python3
"""Python2,3都可以"""
def factorial(n):#主体函数
    if n == 1:
        return 1
    return n * factorial(n-1)
res = input("请输入n:")
print(factorial(res))

但是这样不仅阅读不方便,还有可能在n非常大时造成栈溢出的情况。

>>> factorial(1000)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 4, in factorial
  File "<stdin>", line 4, in factorial
  File "<stdin>", line 4, in factorial
  [Previous line repeated 995 more times]
  File "<stdin>", line 2, in factorial
RecursionError: maximum recursion depth exceeded in comparison

所以我更倾向于这个:

#!/usr/bin/python
li = []
def factorial(n):
    global li
    result = 1
    for i in range(n):
        li.append(i+1)
    for j in li:
        result = result * j
    return result
print(factorial(int(input("请输入n:"))))

通过单一列表存储,可以有效减少内存使用,并且这个调用只占用几个栈,不会造成溢出。

或者math模块中也有函数可以使用:

import math
a = input("N:")
fac = math.factorial(a)
print(fac)

要么就是非常简单的for:

#中文变量名是合法的!
#中文变量名是合法的!!
#中文变量名是合法的!!!
数 = input("数:")
a = 1
for i in range(1,数+1):
    a = a * i
print(a)

非常容易理解~

参考:https://docs.python.org/3

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注三水点靠木的更多内容!

Python 相关文章推荐
Windows下python2.7.8安装图文教程
May 26 Python
Python smtplib实现发送邮件功能
May 22 Python
python利用selenium进行浏览器爬虫
Apr 25 Python
Python如何使用函数做字典的值
Nov 30 Python
python 实现简单的FTP程序
Dec 27 Python
Django 设置多环境配置文件载入问题
Feb 25 Python
python实现图片横向和纵向拼接
Mar 05 Python
python中count函数知识点浅析
Dec 17 Python
python UIAutomator2使用超详细教程
Feb 19 Python
Python基础详解之邮件处理
Apr 28 Python
使用numpy nonzero 找出非0元素
May 14 Python
教你利用Selenium+python自动化来解决pip使用异常
May 20 Python
Python 实现Mac 屏幕截图详解
基于Python和openCV实现图像的全景拼接详细步骤
C3 线性化算法与 MRO之Python中的多继承
Python编程super应用场景及示例解析
Python编程源码报错解决方法总结经验分享
Oct 05 #Python
Python编程根据字典列表相同键的值进行合并
Oct 05 #Python
python编程简单几行代码实现视频转换Gif示例
You might like
mysql 性能的检查和优化方法
2009/06/21 PHP
php中将字符串转为HTML的实体引用的一个类
2013/02/03 PHP
PHP+Mysql树型结构(无限分类)数据库设计的2种方式实例
2014/07/15 PHP
PHP生成各种随机验证码的方法总结【附demo源码】
2017/06/05 PHP
WebGame《逆转裁判》完整版 代码下载(1月24日更新)
2007/01/29 Javascript
javascript dom 基本操作小结
2010/04/11 Javascript
了不起的node.js读书笔记之node的学习总结
2014/12/22 Javascript
使用javascript实现json数据以csv格式下载
2015/01/09 Javascript
js父页面中使用子页面的方法
2016/01/09 Javascript
全面解析Bootstrap布局组件应用
2016/02/22 Javascript
谈一谈js中的执行环境及作用域
2016/03/30 Javascript
基于jquery实现轮播特效
2016/04/22 Javascript
JavaScript中判断数据类型的方法总结
2016/05/24 Javascript
AngularJS实现使用路由切换视图的方法
2017/01/24 Javascript
JS运动特效之任意值添加运动的方法分析
2018/01/24 Javascript
JS实现页面跳转与刷新的方法汇总
2019/08/30 Javascript
使用VUE实现在table中文字信息超过5个隐藏鼠标移到时弹窗显示全部
2019/09/16 Javascript
vue项目创建步骤及路由router
2020/01/14 Javascript
js实现百度登录窗口拖拽效果
2020/03/19 Javascript
Python numpy 点数组去重的实例
2018/04/18 Python
Python爬虫信息输入及页面的切换方法
2018/05/11 Python
Python基于百度云文字识别API
2018/12/13 Python
Python之使用adb shell命令启动应用的方法详解
2019/01/07 Python
详解Python中的分支和循环结构
2020/02/11 Python
如何使用python自带IDLE的几种方法
2020/10/10 Python
意大利比基尼品牌:MISS BIKINI
2019/11/02 全球购物
师范毕业生自我鉴定
2014/01/15 职场文书
委托书怎么写
2014/07/31 职场文书
小学生民族团结演讲稿
2014/08/27 职场文书
清洁员岗位职责
2015/02/15 职场文书
收入证明怎么写
2015/06/12 职场文书
2016元旦晚会主持词开场白和结束语
2015/12/04 职场文书
golang 定时任务方面time.Sleep和time.Tick的优劣对比分析
2021/05/05 Golang
python缺失值的解决方法总结
2021/06/09 Python
使用nginx配置访问wgcloud的方法
2021/06/26 Servers
python实现对doc、txt、xls等文档的读写操作
2022/04/02 Python