定義一個(gè)函數(shù),求一個(gè)數(shù)的階乘,比如求5!
#方法1,遞歸
def jc(num):
if num==1:
return 1
else:
return num*jc(num-1)
print(jc(5)) #返回120
# 方法2 ,for遍歷
def func(num):
'求一個(gè)數(shù)字的階乘,例如5!'
sum=1
for i in range(1,num+1):
sum=sum*i #可以簡化sum*=i
return sum
func(5)
print(func(5))#返回120
# 方法3,lambda表達(dá)式寫
#lambda不能調(diào)用數(shù)組,如列表。
# 這里需要借助一個(gè)函數(shù)去做(這個(gè)函數(shù)調(diào)用了lambda表達(dá)式作為參數(shù),即需要使用高階函數(shù)reduce#使用高階函數(shù),需要調(diào)用一個(gè)模塊# 將階乘改成函數(shù)形式進(jìn)行調(diào)用functools
from functools import reduce
print(reduce(lambda x,y:x*y,range(1,6)))
補(bǔ)充:Python極少代碼實(shí)現(xiàn)階乘函數(shù)
from functools import reduce
def my_factorial(x):
if x 0:
raise ValueError('參數(shù)不能為負(fù)數(shù)')
return reduce(lambda x, y: x*y, range(1, x+1)) if x != 0 else 1
運(yùn)行結(jié)果:
>>> for i in range(10):
... print(my_factorial(i), end=' ')
>>> 1 1 2 6 24 120 720 5040 40320 362880
用好lambda、reduce、filter、map等可以很方便地定義函數(shù)。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
您可能感興趣的文章:- Python 怎么定義計(jì)算N的階乘的函數(shù)
- python遞歸函數(shù)求n的階乘,優(yōu)缺點(diǎn)及遞歸次數(shù)設(shè)置方式
- Python3 實(shí)現(xiàn)遞歸求階乘
- python求前n個(gè)階乘的和實(shí)例
- Python階乘求和的代碼詳解