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入门篇之文件
Oct 20 Python
在Python的setuptools框架下生成egg的教程
Apr 13 Python
Python发送email的3种方法
Apr 28 Python
import的本质解析
Oct 30 Python
python2.7 json 转换日期的处理的示例
Mar 07 Python
python读取文本中的坐标方法
Oct 14 Python
python  创建一个保留重复值的列表的补码
Oct 15 Python
Python3实现计算两个数组的交集算法示例
Apr 03 Python
python笔记_将循环内容在一行输出的方法
Aug 08 Python
利用rest framework搭建Django API过程解析
Aug 31 Python
Python Celery多队列配置代码实例
Nov 22 Python
Python: 传递列表副本方式
Dec 19 Python
Python 实现Mac 屏幕截图详解
基于Python和openCV实现图像的全景拼接详细步骤
C3 线性化算法与 MRO之Python中的多继承
Python编程super应用场景及示例解析
Python编程源码报错解决方法总结经验分享
Oct 05 #Python
Python编程根据字典列表相同键的值进行合并
Oct 05 #Python
python编程简单几行代码实现视频转换Gif示例
You might like
PHP中查询SQL Server或Sybase时TEXT字段被截断的解决方法
2009/03/10 PHP
用Json实现PHP与JavaScript间数据交换的方法详解
2013/06/20 PHP
php清除和销毁session的方法分析
2015/03/19 PHP
关于Yii2框架跑脚本时内存泄漏问题的分析与解决
2019/12/01 PHP
JS查看对象功能代码
2008/04/25 Javascript
javascript 获取元素位置的快速方法 getBoundingClientRect()
2009/11/26 Javascript
JQuery 获得绝对,相对位置的坐标方法
2010/02/09 Javascript
jQuery操作 input type=checkbox的实现代码
2012/06/14 Javascript
JS中prototype关键字的功能介绍及使用示例
2013/07/21 Javascript
纯Javascript实现Windows 8 Metro风格实现
2013/10/15 Javascript
javascript中String对象的slice()方法分析
2014/12/20 Javascript
jquery获取节点名称
2015/04/26 Javascript
jQuery Ajax 异步加载显示等待效果代码分享
2016/08/01 Javascript
JS弹性运动实现方法分析
2016/12/15 Javascript
jQuery弹出窗口简单实现代码
2017/03/09 Javascript
JS实现隔行换色的表格排序
2017/03/27 Javascript
Node.js v8.0.0正式发布!看看带来了哪些主要新特性
2017/06/02 Javascript
vue + vuex todolist的实现示例代码
2018/03/09 Javascript
JS实现的简单折叠展开动画效果示例
2018/04/28 Javascript
基于Bootstrap下拉框插件bootstrap-select使用方法详解
2018/08/07 Javascript
使用pm2自动化部署node项目的方法步骤
2019/01/28 Javascript
Vue中util的工具函数实例详解
2019/07/08 Javascript
利用Python为iOS10生成图标和截屏
2016/09/24 Python
python中urllib.unquote乱码的原因与解决方法
2017/04/24 Python
Python排序搜索基本算法之插入排序实例分析
2017/12/11 Python
Python实现的求解最大公约数算法示例
2018/05/03 Python
pycharm安装和首次使用教程
2018/08/27 Python
在python中利用GDAL对tif文件进行读写的方法
2018/11/29 Python
Larsson & Jennings官网:现代瑞士钟表匠
2018/03/20 全球购物
面向中国市场的在线海淘美妆零售网站:Beauty House美丽屋
2021/03/02 全球购物
董事长秘书岗位职责
2013/11/29 职场文书
岗位廉政承诺书
2014/03/27 职场文书
环保建议书500字
2014/05/14 职场文书
纪检监察建议书
2014/05/19 职场文书
React-vscode使用jsx语法的问题及解决方法
2021/06/21 Javascript
nginx常用配置conf的示例代码详解
2022/03/21 Servers