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实现的百度贴吧网络爬虫实例
Apr 17 Python
Python中利用原始套接字进行网络编程的示例
May 04 Python
Python实现找出数组中第2大数字的方法示例
Mar 26 Python
Python二进制串转换为通用字符串的方法
Jul 23 Python
python requests.post带head和body的实例
Jan 02 Python
Python 多维List创建的问题小结
Jan 18 Python
计算机二级python学习教程(3) python语言基本数据类型
May 16 Python
使用Python3内置文档高效学习以及官方中文文档
May 19 Python
Python函数式编程指南:对生成器全面讲解
Nov 19 Python
Python Flask异步发送邮件实现方法解析
Aug 01 Python
Scrapy 配置动态代理IP的实现
Sep 28 Python
用 Python 定义 Schema 并生成 Parquet 文件详情
Sep 25 Python
Python 实现Mac 屏幕截图详解
基于Python和openCV实现图像的全景拼接详细步骤
C3 线性化算法与 MRO之Python中的多继承
Python编程super应用场景及示例解析
Python编程源码报错解决方法总结经验分享
Oct 05 #Python
Python编程根据字典列表相同键的值进行合并
Oct 05 #Python
python编程简单几行代码实现视频转换Gif示例
You might like
关于php fread()使用技巧
2010/01/22 PHP
探讨:php中在foreach中使用foreach ($arr as &amp;$value) 这种类型的解释
2013/06/24 PHP
PHP学习笔记(二):变量详解
2015/04/17 PHP
PHP 微信支付类 demo
2015/11/30 PHP
yii权限控制的方法(三种方法)
2015/12/28 PHP
PHP共享内存使用与信号控制实例分析
2018/05/09 PHP
php模拟实现斗地主发牌
2020/04/22 PHP
让FireFox支持innerText的实现代码
2009/12/01 Javascript
jValidate 基于jQuery的表单验证插件
2009/12/12 Javascript
服务器端的JavaScript脚本 Node.js 使用入门
2012/03/07 Javascript
JS 实现BASE64_ENCODE和BASE64_DECODE(实例代码)
2013/11/13 Javascript
用JavaScript实现一个代码简洁、逻辑不复杂的多级树
2014/05/23 Javascript
JS循环遍历JSON数据的方法
2014/07/08 Javascript
浅谈js里面的InttoStr和StrtoInt
2016/06/14 Javascript
jquery实现ajax提交表单信息的简单方法(推荐)
2016/08/24 Javascript
JS验证不重复验证码
2017/02/10 Javascript
Web制作验证码功能实例代码
2017/06/19 Javascript
浅谈JS封闭函数、闭包、内置对象
2017/07/18 Javascript
JQuery模拟实现网页中自定义鼠标右键菜单功能
2018/11/14 jQuery
jQuery ajax仿Google自动提示SearchSuggess功能示例
2019/03/28 jQuery
微信JS-SDK实现微信会员卡功能(给用户微信卡包里发送会员卡)
2019/07/25 Javascript
jquery.pager.js分页实现详解
2019/07/29 jQuery
微信小程序request请求封装,验签代码实例
2019/12/04 Javascript
基于Vue2实现移动端图片上传、压缩、拖拽排序、拖拽删除功能
2021/01/05 Vue.js
[44:33]EG vs Liquid 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
scrapy自定义pipeline类实现将采集数据保存到mongodb的方法
2015/04/16 Python
Python中使用hashlib模块处理算法的教程
2015/04/28 Python
Centos 升级到python3后pip 无法使用的解决方法
2018/06/12 Python
Python运行不显示DOS窗口的解决方法
2018/10/22 Python
Python 如何定义匿名或内联函数
2020/08/01 Python
Python非单向递归函数如何返回全部结果
2020/12/18 Python
美国最大和最受信任的二手轮胎商店:Bestusedtires.com
2020/06/02 全球购物
演讲比赛的活动方案
2014/08/28 职场文书
结婚堵门保证书
2015/05/08 职场文书
Python-typing: 类型标注与支持 Any类型详解
2021/05/10 Python
MySql中的json_extract函数处理json字段详情
2022/06/05 MySQL