階乘的三種實現方式

2021-09-03 07:46:37 字數 1324 閱讀 9589

以下三種方式分別採用了不同的方法,第一種是最容易理解的,第二種是最pythonic的,而第三種則是易用性最高的。第三種直接定義乙個階乘函式,隨時都可以呼叫,從而得到不同值。

普通方法:

a =

1n =

5for i in

range(1

,n+1):

a = a * i

print

(a)20

reduce()函式:

from functools import

reduce

n =5

print

(reduce

(lambda x,y:x*y,

range(1

,n+1))

)120

reduce(function, iterable[, initializer]) 函式會對引數序列中元素進行累積。

函式將乙個資料集合(鍊錶,元組等)中的所有資料進行下列操作:用傳給 reduce 中的函式 function(有兩個引數)先對集合中的第 1、2 個元素進行操作,得到的結果再與第三個資料用 function 函式運算,最後得到乙個結果。

>>

>

def add(x, y)

:# 兩數相加..

.return x + y

>>

>

reduce

(add,[1

,2,3

,4,5

])# 計算列表和:1+2+3+4+5

15>>

>

reduce

(lambda x, y: x+y,[1

,2,3

,4,5

])# 使用 lambda 匿名函式

15

注意:在 python3 中,reduce() 函式已經被從全域性名字空間裡移除了,它現在被放置在 fucntools 模組裡,如果想要使用它,則需要通過引入 functools 模組來呼叫 reduce() 函式

採用函式的遞迴:

def

factorial

(n):

if n ==

0or n ==1:

return

1else

:return

(n*factorial(n-1)

)a = factorial(5)

print

(a)120

需要注意的是,函式的遞迴要有終止機制,否則會一直遞迴下去。如上個程式中給定了if判斷語句來終止迴圈的進行。

json三種實現方式

size large 使用ajax的開發專案過程中,經常需要將json格式的字串返回到前端,前端解析成js物件 json ecma 262 e3 中沒有將json概念寫到標準中,還好在 ecma 262 e5 中json的概念被正式引入了,包括全域性的json物件和date的tojson方法。1,e...

cmdb實現三種方式

為什麼要做cmdb?1 實現運維自動化,cmdb是實現運維自動化的基石 2 之前做資產統計的時候,使用execl來統計,為了年底資產審計方便 3 運維日常工作繁瑣,4 執行環境不統一 agent方式實現 agent方式,可以將伺服器上面的agent程式作為定時任務,定時將資產資訊提交到指定api錄入...

https實現三種方式

單個ecs,新增網域名稱證書 公網 私有 並新增跳轉https 負載均衡 upstream web cluster server server web cluster server server 1 公網證書 2.需要slb新增證書,將slb的80埠刪除 3.為slb配置基於https的訪問 4.將...