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 相关文章推荐
按日期打印Python的Tornado框架中的日志的方法
May 02 Python
Python 实现12306登录功能实例代码
Feb 09 Python
Python subprocess模块常见用法分析
Jun 12 Python
Flask框架通过Flask_login实现用户登录功能示例
Jul 17 Python
python实现对任意大小图片均匀切割的示例
Dec 05 Python
深入理解Python异常处理的哲学
Feb 01 Python
python 求定积分和不定积分示例
Nov 20 Python
PyTorch中torch.tensor与torch.Tensor的区别详解
May 18 Python
浅谈keras中自定义二分类任务评价指标metrics的方法以及代码
Jun 11 Python
Python爬虫爬取新闻资讯案例详解
Jul 14 Python
Python基于字典实现switch case函数调用
Jul 22 Python
详解python os.path.exists判断文件或文件夹是否存在
Nov 16 Python
Python 实现Mac 屏幕截图详解
基于Python和openCV实现图像的全景拼接详细步骤
C3 线性化算法与 MRO之Python中的多继承
Python编程super应用场景及示例解析
Python编程源码报错解决方法总结经验分享
Oct 05 #Python
Python编程根据字典列表相同键的值进行合并
Oct 05 #Python
python编程简单几行代码实现视频转换Gif示例
You might like
MySql 按时间段查询数据方法(实例说明)
2008/11/02 PHP
使用PHP+AJAX让WordPress动态加载文章的教程
2015/12/11 PHP
24条货真价实的PHP代码优化技巧
2016/07/28 PHP
php倒计时出现-0情况的解决方法
2016/07/28 PHP
PHP使用SMTP邮件服务器发送邮件示例
2018/08/28 PHP
HTML TO JavaScript 转换
2006/06/26 Javascript
jquery中使用$(#form).submit()重写提交表单无效原因分析及解决
2013/03/25 Javascript
js创建元素(节点)示例
2014/01/02 Javascript
IE下Ajax缓存问题的快速解决方法(get方式)
2014/01/09 Javascript
Javascript 构造函数详解
2014/10/22 Javascript
JQuery的attr 与 val区别
2016/06/12 Javascript
jQuery实现每隔几条元素增加1条线的方法
2016/06/27 Javascript
chrome下判断点击input上标签还是其余标签的实现方法
2016/09/18 Javascript
详解nodejs中exports和module.exports的区别
2017/02/17 NodeJs
Angular实现表单验证功能
2017/11/13 Javascript
使用ngrok+express解决本地环境中微信接口调试问题
2018/02/26 Javascript
详解在Node.js中发起HTTP请求的5种方法
2019/01/10 Javascript
JS实现倒序输出的几种常用方法示例
2019/04/13 Javascript
Vue中遍历数组的新方法实例详解
2019/07/21 Javascript
python解决字典中的值是列表问题的方法
2013/03/04 Python
Python import自定义模块方法
2015/02/12 Python
python的re正则表达式实例代码
2018/01/24 Python
Python基于hashlib模块的文件MD5一致性加密验证示例
2018/02/10 Python
pandas.dataframe中根据条件获取元素所在的位置方法(索引)
2018/06/07 Python
python遍历文件夹,指定遍历深度与忽略目录的方法
2018/07/11 Python
Python+pyplot绘制带文本标注的柱状图方法
2019/07/08 Python
美国在线奢侈品寄售商店:Luxury Garage Sale
2018/08/19 全球购物
澳大利亚天然护肤品、化妆品和健康产品一站式商店:Nourished Life
2018/12/02 全球购物
Clarks鞋澳大利亚官方网站:Clarks Australia
2019/12/25 全球购物
国际金融专业大学生职业生涯规划书
2013/12/28 职场文书
祖国在我心中演讲稿500字
2014/05/04 职场文书
户籍证明书标准模板
2014/09/10 职场文书
纪念九一八事变演讲稿:忘记意味着背叛
2014/09/14 职场文书
2014最新毕业证代领委托书
2014/09/26 职场文书
党员干部四风问题整改措施思想汇报
2014/10/12 职场文书
三好学生个人总结
2015/02/15 职场文书