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中的reduce内建函数使用方法指南
Aug 31 Python
详解Django中Request对象的相关用法
Jul 17 Python
对Python中DataFrame按照行遍历的方法
Apr 08 Python
Python从数据库读取大量数据批量写入文件的方法
Dec 10 Python
Python通过for循环理解迭代器和生成器实例详解
Feb 16 Python
django做form表单的数据验证过程详解
Jul 26 Python
Python学习笔记之列表推导式实例分析
Aug 13 Python
解决Python3用PIL的ImageFont输出中文乱码的问题
Aug 22 Python
Python远程开发环境部署与调试过程图解
Dec 09 Python
pytorch 实现在一个优化器中设置多个网络参数的例子
Feb 20 Python
Python实现Word表格转成Excel表格的示例代码
Apr 16 Python
python删除指定列或多列单个或多个内容实例
Jun 28 Python
Python 实现Mac 屏幕截图详解
基于Python和openCV实现图像的全景拼接详细步骤
C3 线性化算法与 MRO之Python中的多继承
Python编程super应用场景及示例解析
Python编程源码报错解决方法总结经验分享
Oct 05 #Python
Python编程根据字典列表相同键的值进行合并
Oct 05 #Python
python编程简单几行代码实现视频转换Gif示例
You might like
php使用unset()删除数组中某个单元(键)的方法
2015/02/17 PHP
PHP递归遍历多维数组实现无限分类的方法
2016/05/06 PHP
js getElementsByTagName的简写方式
2010/06/27 Javascript
颜色选择器 Color Picker,IE,Firefox,Opera,Safar
2010/11/25 Javascript
javascript日期转换 时间戳转日期格式
2011/11/05 Javascript
JS高级调试技巧:捕获和分析 JavaScript Error详解
2014/03/16 Javascript
iframe里面的元素触发父窗口元素事件的jquery代码
2014/10/19 Javascript
javascript引用赋值(地址传值)用法实例
2015/01/13 Javascript
javascript实现鼠标拖动改变层大小的方法
2015/04/30 Javascript
js实现可折叠展开的手风琴菜单效果
2015/09/07 Javascript
Javascript将数字转化成为货币格式字符串
2016/06/22 Javascript
vue组件实例解析
2017/01/10 Javascript
windows系统下更新nodejs版本的方案
2017/11/24 NodeJs
JavaScript中七种流行的开源机器学习框架
2018/10/11 Javascript
js验证身份证号码记录的方法
2019/04/26 Javascript
[03:00]2014DOTA2国际邀请赛 Titan淘汰潸然泪下Ohaiyo专访
2014/07/15 DOTA
详解Python中的静态方法与类成员方法
2017/02/28 Python
安装python时MySQLdb报错的问题描述及解决方法
2018/03/20 Python
tensorflow 1.0用CNN进行图像分类
2018/04/15 Python
Python FTP两个文件夹间的同步实例代码
2018/05/25 Python
python+pandas+时间、日期以及时间序列处理方法
2018/07/10 Python
使用PIL(Python-Imaging)反转图像的颜色方法
2019/01/24 Python
Python实现12306火车票抢票系统
2019/07/04 Python
在Ubuntu 20.04中安装Pycharm 2020.1的图文教程
2020/04/30 Python
解决Pytorch自定义层出现多Variable共享内存错误问题
2020/06/28 Python
python中@contextmanager实例用法
2021/02/07 Python
Smashbox英国官网:美国知名彩妆品牌
2017/11/13 全球购物
Foot Locker加拿大官网:美国知名运动产品零售商
2019/07/21 全球购物
全球采购的街头服饰和帽子:Urban Excess
2020/10/28 全球购物
经典c++面试题三
2015/07/08 面试题
写好求职信第一句话的技巧
2013/10/26 职场文书
活动总结模板
2014/05/09 职场文书
2014年政风行风自查自纠报告
2014/10/21 职场文书
北京天坛导游词
2015/02/12 职场文书
使用redis生成唯一编号及原理示例详解
2021/09/15 Redis
Android开发EditText禁止输入监听及InputFilter字符过滤
2022/06/10 Java/Android