阶乘的几种写法


阶乘-->>数学用n! = n*(n-1)*(n-2)*(n-3)*....*3*2*1,0的阶乘也是1,本人无法演绎,只能简单的从1开始

第一种:推导式+循环遍历列表内每个元素相乘

def factorial(n):
    li =[i for i in range(1,n+1)]   #li = [1,2,3,4]  推导式,形成一个列表,从1开始至n+1结束(左闭右开,n须+1)
    a = 1                           # a = 1开始计算,如果从0开始,0×任何整数都为0,对此题无太大意义
    for i in li:                    # 遍历列表内元素,循环需要遍历完才会进行下一步
        a = a *i                  # =左边的a为右边相乘的赋值,第一次=右边为1*1 则a =1,第二次=右边为1*2则=左边a=2,第三次=右边为2*3则=左边a=6,.......
    return a 
print(factorial(4)) 

第二种:调用functools模块reduce的累计算

from functools import reduce  #reduce 累计算,格式为reduce(函数,序列)序列:array 列表、元组、字典
def factorial(n):
    li = [i for i in range(1,n+1)]   #同第一种推导式,形成列表
    return reduce((lambda x,y:x*y),li)  # 匿名函数lambda
print(factorial(4))

第三种:递归

def factorial(n):
    if n <=1:
        return 1
    return n*factorial(n-1)
print(factorial(5))

第四种:模块numpy中的prod

import numpy
def func(n):
    Array = [i for i in range(1,n+1)]
    return numpy.prod(Array)
print(func(1))

  

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM