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 相关文章推荐
Python3 模块、包调用&amp;路径详解
Oct 25 Python
Python编程实现线性回归和批量梯度下降法代码实例
Jan 04 Python
python 识别图片中的文字信息方法
May 10 Python
python爬取网易云音乐评论
Nov 16 Python
Python增强赋值和共享引用注意事项小结
May 28 Python
Python使用ffmpy将amr格式的音频转化为mp3格式的例子
Aug 08 Python
python 实现图片上传接口开发 并生成可以访问的图片url
Dec 18 Python
django在保存图像的同时压缩图像示例代码详解
Feb 11 Python
Django中的模型类设计及展示示例详解
May 29 Python
python 下载文件的多种方法汇总
Nov 17 Python
Python爬虫实例之2021猫眼票房字体加密反爬策略(粗略版)
Feb 22 Python
如何理解python接口自动化之logging日志模块
Jun 15 Python
Python 实现Mac 屏幕截图详解
基于Python和openCV实现图像的全景拼接详细步骤
C3 线性化算法与 MRO之Python中的多继承
Python编程super应用场景及示例解析
Python编程源码报错解决方法总结经验分享
Oct 05 #Python
Python编程根据字典列表相同键的值进行合并
Oct 05 #Python
python编程简单几行代码实现视频转换Gif示例
You might like
MySQL 日期时间函数常用总结
2012/06/12 PHP
PHP中常用的转义函数
2014/02/28 PHP
CentOS下与Apache连接的PHP多版本共存方案实现详解
2015/12/19 PHP
php htmlentities()函数的定义和用法
2016/05/13 PHP
jQuery选择器源码解读(一):Sizzle方法
2015/03/31 Javascript
jsp 网站引入外部css或者js失效问题解决
2016/10/31 Javascript
基于JavaScript实现Tab选项卡切换效果
2016/11/24 Javascript
canvas实现简易的圆环进度条效果
2017/02/28 Javascript
基于Bootstrap漂亮简洁的CSS3价格表(附源码下载)
2017/02/28 Javascript
Vue.js结合bootstrap实现分页控件
2017/03/10 Javascript
JS实现简单短信验证码界面
2017/08/07 Javascript
Vue-Router模式和钩子的用法
2018/02/28 Javascript
JQuery Ajax动态加载Table数据的实例讲解
2018/08/09 jQuery
探秘vue-rx 2.0(推荐)
2018/09/21 Javascript
nvm、nrm、npm 安装和使用详解(小结)
2019/01/17 Javascript
layui实现三级导航菜单
2019/07/26 Javascript
node爬取新型冠状病毒的疫情实时动态
2020/02/06 Javascript
Openlayers实现扩散的动态点(水纹效果)
2020/08/17 Javascript
Vue项目配置跨域访问和代理proxy设置方式
2020/09/08 Javascript
对python字典元素的添加与修改方法详解
2018/07/06 Python
Django多数据库的实现过程详解
2019/08/01 Python
PYQT5开启多个线程和窗口,多线程与多窗口的交互实例
2019/12/13 Python
python自动脚本的pyautogui入门学习
2020/04/01 Python
Django如何使用redis作为缓存
2020/05/21 Python
Python collections.defaultdict模块用法详解
2020/06/18 Python
澳大利亚冒险体验:Adrenaline(跳伞、V8赛车、热气球等)
2017/09/18 全球购物
体育教师自荐信范文
2013/12/16 职场文书
社会保险接收函
2014/01/12 职场文书
CAD制图人员的自荐信
2014/02/07 职场文书
2014年药房工作总结
2014/11/22 职场文书
安全保证书
2015/01/16 职场文书
年会邀请函范文
2015/01/30 职场文书
给病人的慰问信
2015/03/23 职场文书
七年级语文教学反思
2016/03/03 职场文书
Golang解析JSON对象
2022/04/30 Golang
Python自动化实战之接口请求的实现
2022/05/30 Python