Python 阶乘详解

 更新时间:2021年10月04日 14:47:17   作者:科学的海洋  
这篇文章主要介绍了详解用python的阶乘,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

相信大家对阶乘都不陌生。不知道阶乘的可以看这里:

一个数的阶乘:

在这里插入图片描述

比如5的阶乘

在这里插入图片描述

在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控制Qt程序的示例详解

    利用python控制Qt程序的示例详解

    这篇文章主要为大家详细介绍了如何利用python实现控制Qt程序,从而进行文本输入,按钮点击等组件控制,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-08-08
  • Python验证码识别的方法

    Python验证码识别的方法

    这篇文章主要介绍了Python验证码识别的方法,涉及Python针对验证码图片的相关分析与操作技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07
  • python 日志 logging模块详细解析

    python 日志 logging模块详细解析

    这篇文章主要介绍了python 日志 logging模块 详细解析,本文通过实例代码给大家介绍的非常详细,对大家的工作或学习具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-03-03
  • 浅析Django中关于session的使用

    浅析Django中关于session的使用

    这篇文章主要介绍了Django下关于session的使用,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-12-12
  • python使用dabl几行代码实现数据处理分析及ML自动化

    python使用dabl几行代码实现数据处理分析及ML自动化

    这篇文章主要为大家分享一个名为 dabl 的开源 Python 工具包,它可以自动化机器学习模型开发,包括数据预处理、特征可视化和分析、建模
    2021-11-11
  • python操作音视频ffmpeg-python对比pyav选择

    python操作音视频ffmpeg-python对比pyav选择

    这篇文章主要介绍了python操作音视频的选择:ffmpeg-python对比pyav,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-11-11
  • python中序列的逆序方式

    python中序列的逆序方式

    这篇文章主要介绍了python中序列的逆序方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-05-05
  • Python3.4编程实现简单抓取爬虫功能示例

    Python3.4编程实现简单抓取爬虫功能示例

    这篇文章主要介绍了Python3.4编程实现简单抓取爬虫功能,涉及Python3.4网页抓取及正则解析相关操作技巧,需要的朋友可以参考下
    2017-09-09
  • 解决python 找不到module的问题

    解决python 找不到module的问题

    今天小编就为大家分享一篇解决python 找不到module的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02
  • Pandas中Series的创建及数据类型转换

    Pandas中Series的创建及数据类型转换

    这篇文章主要介绍了Pandas中Series的创建及数据类型转换,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-08-08

最新评论