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实现从web抓取文档的方法
Sep 26 Python
零基础写python爬虫之urllib2中的两个重要概念:Openers和Handlers
Nov 05 Python
python uuid模块使用实例
Apr 08 Python
Python打包可执行文件的方法详解
Sep 19 Python
python SMTP实现发送带附件电子邮件
May 22 Python
Python Numpy库安装与基本操作示例
Jan 08 Python
Python 日志logging模块用法简单示例
Oct 18 Python
Python 中的pygame安装与配置教程详解
Feb 10 Python
python 基于selenium实现鼠标拖拽功能
Dec 24 Python
pycharm 配置svn的图文教程(手把手教你)
Jan 15 Python
Ubuntu20.04环境安装tensorflow2的方法步骤
Jan 29 Python
Python torch.flatten()函数案例详解
Aug 30 Python
Python 实现Mac 屏幕截图详解
基于Python和openCV实现图像的全景拼接详细步骤
C3 线性化算法与 MRO之Python中的多继承
Python编程super应用场景及示例解析
Python编程源码报错解决方法总结经验分享
Oct 05 #Python
Python编程根据字典列表相同键的值进行合并
Oct 05 #Python
python编程简单几行代码实现视频转换Gif示例
You might like
用PHP的超级变量$_POST获取HTML表单(HTML Form) 数据
2011/05/07 PHP
PHP中使用unset销毁变量并内存释放问题
2012/07/05 PHP
解析php中var_dump,var_export,print_r三个函数的区别
2013/06/21 PHP
解析file_get_contents模仿浏览器头(user_agent)获取数据
2013/06/27 PHP
Thinkphp多文件上传实现方法
2014/10/31 PHP
PHP打印输出函数汇总
2016/08/28 PHP
IE和Firefox下javascript的兼容写法小结
2008/12/10 Javascript
JS检测图片大小的实例
2013/08/21 Javascript
js格式化时间小结
2014/11/03 Javascript
js Calender控件使用详解
2015/01/05 Javascript
jQuery遍历json中多个map的方法
2015/02/12 Javascript
jquery获取及设置outerhtml的方法
2015/03/09 Javascript
JSONP原理及简单实现
2016/06/08 Javascript
js数组的五种迭代方法及两种归并方法(推荐)
2016/06/14 Javascript
vue.js中过滤器的使用教程
2017/06/08 Javascript
JavaScript中 ES6变量的结构赋值
2018/07/10 Javascript
Vue CLI 3搭建vue+vuex最全分析(推荐)
2018/09/27 Javascript
微信小程序引用iconfont图标的方法
2018/10/22 Javascript
使用ESLint禁止项目导入特定模块的方法步骤
2019/03/04 Javascript
小程序中this.setData的使用和注意事项
2019/08/28 Javascript
使用js获取身份证年龄的示例代码
2020/12/11 Javascript
vue-cli 3如何使用vue-bootstrap-datetimepicker日期插件
2021/02/20 Vue.js
Python BeautifulSoup中文乱码问题的2种解决方法
2014/04/22 Python
Python模仿POST提交HTTP数据及使用Cookie值的方法
2014/11/10 Python
插入排序_Python与PHP的实现版(推荐)
2017/05/11 Python
python实现媒体播放器功能
2018/02/11 Python
对python中的pop函数和append函数详解
2018/05/04 Python
pandas dataframe的合并实现(append, merge, concat)
2019/06/24 Python
python带参数打包exe及调用方式
2019/12/21 Python
tensorflow实现打印ckpt模型保存下的变量名称及变量值
2020/01/04 Python
韩国美国时尚服装和美容在线全球市场:KOODING
2018/11/07 全球购物
领导调研接待方案
2014/02/27 职场文书
学校运动会开幕词
2016/03/03 职场文书
游戏开发中如何使用CocosCreator进行音效处理
2021/04/14 Javascript
Nginx速查手册及常见问题
2022/04/07 Servers
使用CSS实现百叶窗效果示例代码
2023/05/07 HTML / CSS