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 相关文章推荐
windows下wxPython开发环境安装与配置方法
Jun 28 Python
使用Python3制作TCP端口扫描器
Apr 17 Python
Python模拟随机游走图形效果示例
Feb 06 Python
解决Pycharm调用Turtle时 窗口一闪而过的问题
Feb 16 Python
详解DeBug Python神级工具PySnooper
Jul 03 Python
简单了解python中的与或非运算
Sep 18 Python
使用Nibabel库对nii格式图像的读写操作
Jul 01 Python
python怎么对数字进行过滤
Jul 05 Python
python跨文件使用全局变量的实现
Nov 17 Python
【超详细】八大排序算法的各项比较以及各自特点
Mar 31 Python
用Python爬取各大高校并可视化帮弟弟选大学,弟弟直呼牛X
Jun 11 Python
Python实战实现爬取天气数据并完成可视化分析详解
Jun 16 Python
Python 实现Mac 屏幕截图详解
基于Python和openCV实现图像的全景拼接详细步骤
C3 线性化算法与 MRO之Python中的多继承
Python编程super应用场景及示例解析
Python编程源码报错解决方法总结经验分享
Oct 05 #Python
Python编程根据字典列表相同键的值进行合并
Oct 05 #Python
python编程简单几行代码实现视频转换Gif示例
You might like
DC这些乐高系列动画电影你看过几部?
2020/04/09 欧美动漫
SONY SRF-40W电路分析
2021/03/02 无线电
桌面中心(三)修改数据库
2006/10/09 PHP
php的memcache类分享(memcache队列)
2014/03/26 PHP
php中get_defined_constants函数用法实例分析
2015/05/12 PHP
php 自定义错误日志实例详解
2016/11/12 PHP
PHP设计模式之适配器模式(Adapter)原理与用法详解
2019/12/12 PHP
关于文本限制字数的js代码
2007/04/02 Javascript
Extjs4实现两个GridPanel之间数据拖拽功能具体方法
2013/11/21 Javascript
JavaScript中eval()函数用法详解
2015/12/14 Javascript
js实现导航栏中英文切换效果
2017/01/16 Javascript
一个简易时钟效果js实现代码
2020/03/25 Javascript
基于vue-cli创建的项目的目录结构及说明介绍
2017/11/23 Javascript
JS实现的字符串数组去重功能小结
2019/06/17 Javascript
[02:22:36]《加油!DOTA》总决赛
2014/09/19 DOTA
wxPython窗口的继承机制实例分析
2014/09/28 Python
编写Python脚本来实现最简单的FTP下载的教程
2015/05/04 Python
python3 模拟登录v2ex实例讲解
2017/07/13 Python
Python3.6.0+opencv3.3.0人脸检测示例
2018/05/25 Python
python读取和保存图片5种方法对比
2018/09/12 Python
python3.6下Numpy库下载与安装图文教程
2019/04/02 Python
python Django框架实现web端分页呈现数据
2019/10/31 Python
Python跑循环时内存泄露的解决方法
2020/01/13 Python
Python安装与卸载流程详细步骤(图解)
2020/02/20 Python
python之语音识别speech模块
2020/09/09 Python
Agoda.com官方网站:便宜预订全球酒店,高达80%的折扣
2018/04/04 全球购物
Parfume Klik丹麦:香水网上商店
2018/07/10 全球购物
eBay爱尔兰站:eBay.ie
2019/08/09 全球购物
德国购买门票网站:ADticket.de
2019/10/31 全球购物
是否有自动比较结构的方法
2015/06/03 面试题
南京软件公司的.net程序员笔试题
2014/08/31 面试题
医药工作岗位求职信分享
2013/12/31 职场文书
办公室前台岗位职责
2014/01/04 职场文书
2014-2015学年工作总结
2014/11/27 职场文书
委托公证书样本
2015/01/23 职场文书
楚门的世界观后感
2015/06/03 职场文书