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实现批量下载图片的方法
Jul 08 Python
python编程开发之类型转换convert实例分析
Nov 13 Python
python实现应用程序在右键菜单中添加打开方式功能
Jan 09 Python
Pycharm学习教程(7)虚拟机VM的配置教程
May 04 Python
Python的mysql数据库的更新如何实现
Jul 31 Python
Python FTP两个文件夹间的同步实例代码
May 25 Python
Python3编码问题 Unicode utf-8 bytes互转方法
Oct 26 Python
django 解决model中类写不到数据库中,数据库无此字段的问题
May 20 Python
浅谈Python 函数式编程
Jun 20 Python
浅析Python 责任链设计模式
Sep 11 Python
pyqt5实现井字棋的示例代码
Dec 07 Python
python实现简易自习室座位预约系统
Jun 30 Python
Python 实现Mac 屏幕截图详解
基于Python和openCV实现图像的全景拼接详细步骤
C3 线性化算法与 MRO之Python中的多继承
Python编程super应用场景及示例解析
Python编程源码报错解决方法总结经验分享
Oct 05 #Python
Python编程根据字典列表相同键的值进行合并
Oct 05 #Python
python编程简单几行代码实现视频转换Gif示例
You might like
PHP技术开发技巧分享
2010/03/23 PHP
利用php绘制饼状图的实现代码
2013/06/07 PHP
PHP中的排序函数sort、asort、rsort、krsort、ksort区别分析
2014/08/18 PHP
CI框架源码解读之URI.php中_fetch_uri_string()函数用法分析
2016/05/18 PHP
php实现根据身份证获取精准年龄
2020/02/26 PHP
PHP高并发和大流量解决方案整理
2021/03/09 PHP
在textarea中显示html页面的javascript代码
2007/04/20 Javascript
pjblog中的UBBCode.js
2007/04/25 Javascript
用js判断浏览器是否是IE的比较好的办法
2007/05/08 Javascript
jquery tools 系列 scrollable(2)
2009/09/06 Javascript
JS远程获取网页源代码实例
2013/09/05 Javascript
用js来获取上传的文件名纯粹是为了美化而用
2013/10/23 Javascript
Javascript中的Array数组对象详谈
2014/03/03 Javascript
jquery性能优化高级技巧
2015/08/24 Javascript
jQuery zclip插件实现跨浏览器复制功能
2015/11/02 Javascript
jQuery获得字体颜色16位码的方法
2016/02/20 Javascript
Bootstrap CSS使用方法
2016/12/23 Javascript
js+html5实现半透明遮罩层弹框效果
2020/08/24 Javascript
React Native开发封装Toast与加载Loading组件示例
2018/09/08 Javascript
探秘vue-rx 2.0(推荐)
2018/09/21 Javascript
原生js+css实现tab切换功能
2020/09/17 Javascript
[46:21]Liquid vs LGD 2018国际邀请赛淘汰赛BO3 第一场 8.23
2018/08/24 DOTA
python读取html中指定元素生成excle文件示例
2014/04/03 Python
Python标准库inspect的具体使用方法
2017/12/06 Python
django-rest-framework解析请求参数过程详解
2019/07/18 Python
Django 后台获取文件列表 InMemoryUploadedFile的例子
2019/08/07 Python
python脚本实现mp4中的音频提取并保存在原目录
2020/02/27 Python
Python实现封装打包自己写的代码,被python import
2020/07/12 Python
python修改微信和支付宝步数的示例代码
2020/10/12 Python
法国综合购物网站:RueDuCommerce
2016/09/12 全球购物
计算机专业自荐信
2013/10/14 职场文书
企业管理标语
2014/06/10 职场文书
2015年仓管员工作总结
2015/04/21 职场文书
环保守法证明
2015/06/24 职场文书
2016年大学生暑假爱心支教活动策划书
2015/11/26 职场文书
德劲DE1105机评
2022/04/05 无线电