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的几条建议分享
Feb 10 Python
Python 字典(Dictionary)操作详解
Mar 11 Python
Python输出9*9乘法表的方法
May 25 Python
Python中getattr函数和hasattr函数作用详解
Jun 14 Python
Python通过Django实现用户注册和邮箱验证功能代码
Dec 11 Python
完美解决Python 2.7不能正常使用pip install的问题
Jun 12 Python
在Django中URL正则表达式匹配的方法
Dec 20 Python
Python模拟百度自动输入搜索功能的实例
Feb 14 Python
解决os.path.isdir() 判断文件夹却返回false的问题
Nov 29 Python
python 实现任务管理清单案例
Apr 25 Python
Python基础之进程详解
May 21 Python
python index() 与 rindex() 方法的使用示例详解
Dec 24 Python
Python 实现Mac 屏幕截图详解
基于Python和openCV实现图像的全景拼接详细步骤
C3 线性化算法与 MRO之Python中的多继承
Python编程super应用场景及示例解析
Python编程源码报错解决方法总结经验分享
Oct 05 #Python
Python编程根据字典列表相同键的值进行合并
Oct 05 #Python
python编程简单几行代码实现视频转换Gif示例
You might like
php获取ip的三个属性区别介绍(HTTP_X_FORWARDED_FOR,HTTP_VIA,REMOTE_ADDR)
2012/09/23 PHP
深入解析php之apc
2013/05/15 PHP
Zend studio文件注释模板设置方法
2013/09/29 PHP
Laravel 5框架学习之向视图传送数据(进阶篇)
2015/04/08 PHP
详解php实现页面静态化原理
2017/06/21 PHP
PHP Socket网络操作类定义与用法示例
2017/08/30 PHP
告诉大家什么是JSON
2008/06/10 Javascript
一个很简单的jquery+xml+ajax的无刷新树结构(无css,后台是c#)
2010/06/02 Javascript
Javascript页面添加到收藏夹的简单方法
2013/08/07 Javascript
js判断一个字符串是否包含一个子串的方法
2015/01/26 Javascript
javascript框架设计之种子模块
2015/06/23 Javascript
Jquery插件之Fancybox丰富的弹出层效果附源码下载
2015/12/02 Javascript
angular route中使用resolve在uglify压缩后问题解决
2016/09/21 Javascript
Bootstrap 3.x打印预览背景色与文字显示异常的解决
2016/11/06 Javascript
实现easyui的datagrid导出为excel的示例代码
2016/11/10 Javascript
js实现手机拍照上传功能
2017/01/17 Javascript
原生js实现旋转木马轮播图效果
2017/02/27 Javascript
AngularJS实现根据不同条件显示不同控件
2017/04/20 Javascript
JavaScript实现的数字与字符串转换功能示例
2017/08/23 Javascript
Vue2几种常见开局方式详解
2017/09/09 Javascript
javascript实现遮罩层动态效果实例
2019/05/14 Javascript
如何在JavaScript中等分数组的实现
2020/12/13 Javascript
简析Python的闭包和装饰器
2016/02/26 Python
详解Python中表达式i += x与i = i + x是否等价
2017/02/08 Python
Django与JS交互的示例代码
2017/08/23 Python
浅谈python中的正则表达式(re模块)
2017/10/17 Python
python 以16进制打印输出的方法
2018/07/09 Python
python 对多个csv文件分别进行处理的方法
2019/01/07 Python
Python3 实现减少可调用对象的参数个数
2019/12/20 Python
小白教你PyCharm从下载到安装再到科学使用PyCharm2020最新激活码
2020/09/25 Python
Flask处理Web表单的实现方法
2021/01/31 Python
CSS3之边框多颜色Border-color属性使用示例
2013/10/11 HTML / CSS
HTML5的结构和语义(2):结构
2008/10/17 HTML / CSS
智能电子秤、手表和健康监测仪:Withings(之前为诺基亚健康)
2018/10/30 全球购物
淘宝店铺营销方案
2014/02/13 职场文书
2015年社区综治宣传月活动总结
2015/03/25 职场文书