方法一:
很普通的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,請注意處理相應的...