階乘的幾種寫法


階乘-->>數學用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