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检测网页是否有日常链接
Jun 03 Python
Python 的 Socket 编程
Mar 24 Python
Python多线程结合队列下载百度音乐的方法
Jul 27 Python
Python连接数据库学习之DB-API详解
Feb 07 Python
Python中支持向量机SVM的使用方法详解
Dec 26 Python
python使用itchat库实现微信机器人(好友聊天、群聊天)
Jan 04 Python
python smtplib模块实现发送邮件带附件sendmail
May 22 Python
python函数参数(必须参数、可变参数、关键字参数)
Aug 16 Python
Python实现TCP探测目标服务路由轨迹的原理与方法详解
Sep 04 Python
python将时分秒转换成秒的实例
Dec 07 Python
Python 序列化和反序列化库 MarshMallow 的用法实例代码
Feb 25 Python
Python爬虫scrapy框架Cookie池(微博Cookie池)的使用
Jan 13 Python
Python 实现Mac 屏幕截图详解
基于Python和openCV实现图像的全景拼接详细步骤
C3 线性化算法与 MRO之Python中的多继承
Python编程super应用场景及示例解析
Python编程源码报错解决方法总结经验分享
Oct 05 #Python
Python编程根据字典列表相同键的值进行合并
Oct 05 #Python
python编程简单几行代码实现视频转换Gif示例
You might like
GD输出汉字的函数的分析
2006/10/09 PHP
php实现telnet功能示例
2014/04/08 PHP
PHP原生函数一定好吗?
2014/12/08 PHP
PHP使用NuSOAP调用Web服务的方法
2015/07/18 PHP
360搜索引擎自动收录php改写方案
2018/04/28 PHP
javascript中关于执行环境的杂谈
2011/08/14 Javascript
中文字符串截取的js函数代码
2013/04/17 Javascript
wap图片滚动特效无css3元素纯js脚本编写
2014/08/22 Javascript
jQuery实现textarea自动增长宽高的方法
2015/12/18 Javascript
jquery分页插件jquery.pagination.js使用方法解析
2016/04/01 Javascript
javaScript中的原型解析【推荐】
2016/05/05 Javascript
使用JS正则表达式 替换括号,尖括号等
2016/11/29 Javascript
微信公众号菜单配置微信小程序实例详解
2017/03/31 Javascript
将 vue 生成的 js 上传到七牛的实例
2017/07/28 Javascript
vue利用axios来完成数据的交互
2018/03/23 Javascript
浅谈vue中.vue文件解析流程
2018/04/24 Javascript
JS中类的静态方法,静态变量,实例方法,实例变量区别与用法实例分析
2020/03/14 Javascript
[36:33]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第二场 11.29
2020/12/02 DOTA
Python获取Linux系统下的本机IP地址代码分享
2014/11/07 Python
学习python类方法与对象方法
2016/03/15 Python
同时安装Python2 &amp; Python3 cmd下版本自由选择的方法
2017/12/09 Python
Python使用Dijkstra算法实现求解图中最短路径距离问题详解
2018/05/16 Python
python简易远程控制单线程版
2018/06/20 Python
对Python通过pypyodbc访问Access数据库的方法详解
2018/10/27 Python
python对 MySQL 数据库进行增删改查的脚本
2020/10/22 Python
Python常用外部指令执行代码实例
2020/11/05 Python
大学生大二自我鉴定
2013/10/28 职场文书
兼职学生的自我评价
2013/11/24 职场文书
实习鉴定范文
2013/12/19 职场文书
保护环境建议书
2014/03/12 职场文书
房地产财务部员工岗位职责
2014/03/12 职场文书
工伤事故赔偿协议书
2014/04/15 职场文书
小组名称和口号
2014/06/09 职场文书
体育系毕业生自荐信
2014/06/28 职场文书
夫妻忠诚协议范文
2014/11/16 职场文书
SQL Server查询某个字段在哪些表中存在
2022/03/03 SQL Server