階乘的幾種寫法

2022-09-12 23:36:24 字數 1128 閱讀 6114

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

oracle url的幾種寫法

jdbc oracle thin example jdbc oracle thin 注意這裡的格式,後面有 這是與使用sid的主要區別。這種格式是oracle 推薦的格式,因為對於集群來說,每個節點的sid 是不一樣的,但是service name 確可以包含所有節點。jdbc oracle thi...

網頁的幾種寫法

第一種是小白式的寫法,就是先寫html再寫css,一對一的寫法,這種寫法效率比較低下,同樣的 要寫n遍 另外我加一句,img為什麼放多張 的時候會有邊距!這裡的解決辦法是這樣的,可以將img空格刪除掉,如果你用margin left解決掉的時候,到時候再上傳到伺服器中就會發生錯誤,因為上傳到伺服器的...

委託的幾種寫法

參考自jeffrey zhao的文章 net1.x public delegate void mydel3 string message public class methods public void testmethod2 string msg public class deltest 需要使用...