python學習 計算階乘的幾種方法

2021-08-07 03:52:06 字數 789 閱讀 1567

方法一:

很普通的for迴圈語句:

a = 1

n = 5

for i in range(1,n+1):

a = a * i

print(a)

得到結果:

120
方法二:

採用上篇博文提到的reduce()函式:

from functools import reduce

n = 5

print(reduce(lambda x,y:x*y,range(1,n+1)))

得到結果:

120
方法三:

採用函式的遞迴:

def

factorial

(n):

if n == 0

or n == 1:

return

1else:

return (n*factorial(n-1))

a = factorial(5)

print(a)

得到結果:

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

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

階乘的幾種寫法

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

Python 基礎練習 階乘計算

問題描述 輸入乙個正整數n,輸出n 的值。其中n 123 n。演算法描述 n 可能很大,而計算機能表示的整數範圍有限,需要使用高精度計算的方法。使用乙個陣列a來表示乙個大整數a,a 0 表示a的個位,a 1 表示a的十位,依次類推。將a乘以乙個整數k變為將陣列a的每乙個元素都乘以k,請注意處理相應的...

用python進行階乘計算

問題描述 輸入乙個正整數n,輸出n 的值。其中n 123 n。演算法描述 n 可能很大,而計算機能表示的整數範圍有限,需要使用高精度計算的方法。使用乙個陣列a來表示乙個大整數a,a 0 表示a的個位,a 1 表示a的十位,依次類推。將a乘以乙個整數k變為將陣列a的每乙個元素都乘以k,請注意處理相應的...