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 isinstance判断对象类型
Sep 06 Python
学习python处理python编码问题
Mar 13 Python
对Python 文件夹遍历和文件查找的实例讲解
Apr 26 Python
python读取文件名称生成list的方法
Apr 27 Python
Python read函数按字节(字符)读取文件的实现
Jul 03 Python
基于torch.where和布尔索引的速度比较
Jan 02 Python
python画图常规设置方式
Mar 05 Python
简单介绍一下pyinstaller打包以及安全性的实现
Jun 02 Python
Python 创建TCP服务器的方法
Jul 28 Python
python pip如何手动安装二进制包
Sep 30 Python
基于Python的身份证验证识别和数据处理详解
Nov 14 Python
Python中zipfile压缩包模块的使用
May 14 Python
Python 实现Mac 屏幕截图详解
基于Python和openCV实现图像的全景拼接详细步骤
C3 线性化算法与 MRO之Python中的多继承
Python编程super应用场景及示例解析
Python编程源码报错解决方法总结经验分享
Oct 05 #Python
Python编程根据字典列表相同键的值进行合并
Oct 05 #Python
python编程简单几行代码实现视频转换Gif示例
You might like
深入PHP中慎用双等于(==)的详解
2013/06/06 PHP
destoon找回管理员密码的方法
2014/06/21 PHP
php实现编辑和保存文件的方法
2015/07/20 PHP
php中使用GD库做验证码
2016/03/31 PHP
php数据访问之增删改查操作
2016/05/09 PHP
PHP实现提高SESSION响应速度的几种方法详解
2019/08/09 PHP
PHP 图片合成、仿微信群头像的方法示例
2019/10/25 PHP
犀利的js 函数集合
2009/06/11 Javascript
js实现单行文本向上滚动效果实例代码
2013/11/28 Javascript
jQuery之字体大小的设置方法
2014/02/27 Javascript
jQuery函数的第二个参数获取指定上下文中的DOM元素
2014/05/19 Javascript
jquery动态添加删除一行数据示例
2014/06/12 Javascript
jQuery分组选择器用法实例
2014/12/23 Javascript
JS实现让访问者自助选择网页文字颜色的方法
2015/02/24 Javascript
js中split和replace的用法实例
2015/02/28 Javascript
JavaScript学习笔记之DOM基础 2.4
2015/08/14 Javascript
详解JavaScript基本类型和引用类型
2015/12/09 Javascript
JQuery+EasyUI轻松实现步骤条效果
2016/02/22 Javascript
Bootstrap风格的zTree右键菜单
2017/02/17 Javascript
js实现下一页页码效果
2017/03/07 Javascript
js实现关闭网页出现是否离开提示
2017/12/07 Javascript
详解js中let与var声明变量的区别
2020/04/05 Javascript
了解JavaScript表单操作和表单域
2019/05/27 Javascript
vue计算属性无法监听到数组内部变化的解决方案
2019/11/06 Javascript
[01:08:57]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS LGD第二场
2014/05/24 DOTA
python编程之requests在网络请求中添加cookies参数方法详解
2017/10/25 Python
flask中的wtforms使用方法
2018/07/21 Python
详解Python3中的迭代器和生成器及其区别
2018/10/09 Python
浅谈python之高阶函数和匿名函数
2019/03/21 Python
python正则过滤字母、中文、数字及特殊字符方法详解
2020/02/11 Python
Python3连接Mysql8.0遇到的问题及处理步骤
2020/02/17 Python
酒店个人培训自我鉴定
2013/12/11 职场文书
机械设计职业生涯规划书
2013/12/27 职场文书
运动会通讯稿200字
2014/02/16 职场文书
英文感谢信范文
2015/01/21 职场文书
大学生社会服务心得体会
2016/01/22 职场文书