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获取CPU和内存信息的思路与实现(linux系统)
Jan 03 Python
Python实现查找系统盘中需要找的字符
Jul 14 Python
详解Python 数据库 (sqlite3)应用
Dec 07 Python
2018年Python值得关注的开源库、工具和开发者(总结篇)
Jan 04 Python
python中使用psutil查看内存占用的情况
Jun 11 Python
Python打包方法Pyinstaller的使用
Oct 09 Python
Django实现文件上传下载
Oct 06 Python
Python 类的魔法属性用法实例分析
Nov 21 Python
tensorflow tf.train.batch之数据批量读取方式
Jan 20 Python
解决pyecharts运行后产生的html文件用浏览器打开空白
Mar 11 Python
Python %r和%s区别代码实例解析
Apr 03 Python
Python可视化神器pyecharts绘制地理图表
Jul 07 Python
Python 实现Mac 屏幕截图详解
基于Python和openCV实现图像的全景拼接详细步骤
C3 线性化算法与 MRO之Python中的多继承
Python编程super应用场景及示例解析
Python编程源码报错解决方法总结经验分享
Oct 05 #Python
Python编程根据字典列表相同键的值进行合并
Oct 05 #Python
python编程简单几行代码实现视频转换Gif示例
You might like
php遍历目录viewDir函数
2009/12/15 PHP
PHP正确解析UTF-8字符串技巧应用
2012/11/07 PHP
Zend Framework教程之路由功能Zend_Controller_Router详解
2016/03/07 PHP
php获取flash尺寸详细数据的方法
2016/11/12 PHP
php设计模式之模板模式实例分析【星际争霸游戏案例】
2020/03/24 PHP
关于onScroll事件在IE6下每次滚动触发三次bug说明
2011/09/21 Javascript
javascript中字符串的定义示例代码
2013/12/19 Javascript
javascript限制用户只能输汉字中文的方法
2014/11/20 Javascript
js实现拉幕效果的广告代码
2015/09/02 Javascript
不间断循环滚动效果的实例代码(必看篇)
2016/10/08 Javascript
jQuery纵向导航菜单效果实现方法
2016/12/19 Javascript
Bootstrap源码解读按钮(5)
2016/12/23 Javascript
作为老司机使用 React 总结的 11 个经验教训
2017/04/08 Javascript
JS中使用gulp实现压缩文件及浏览器热加载功能
2017/07/12 Javascript
Vue渲染函数详解
2017/09/15 Javascript
深入浅析angular和vue还有jquery的区别
2018/08/13 jQuery
详解小程序如何改变onLoad的执行时机
2019/11/01 Javascript
Vue通过Blob对象实现导出Excel功能示例代码
2020/07/31 Javascript
vue 验证两次输入的密码是否一致的方法示例
2020/09/29 Javascript
[01:17]Ti4 循环赛第一日回顾
2014/07/11 DOTA
[59:08]DOTA2上海特级锦标赛C组小组赛#2 LGD VS Newbee第一局
2016/02/27 DOTA
Python的Django框架中的数据过滤功能
2015/07/17 Python
python判断计算机是否有网络连接的实例
2018/12/15 Python
Python列表list排列组合操作示例
2018/12/18 Python
在pycharm 中添加运行参数的操作方法
2019/01/19 Python
图文详解python安装Scrapy框架步骤
2019/05/20 Python
Python自定义聚合函数merge与transform区别详解
2020/05/26 Python
SpringBoot首页设置解析(推荐)
2021/02/11 Python
NOTINO英国:在线购买美容和香水
2020/02/25 全球购物
青年志愿者事迹材料
2014/02/07 职场文书
《湘夫人》教学反思
2014/02/21 职场文书
卫生厅领导班子党的群众路线教育实践活动整改措施
2014/09/20 职场文书
企业反腐倡廉心得体会
2015/08/15 职场文书
《珍珠鸟》教学反思
2016/02/16 职场文书
优秀共产党员事迹材料2016
2016/02/29 职场文书
详解Java七大阻塞队列之SynchronousQueue
2021/09/04 Java/Android