1樓:王加加
如果你說的累乘指的是階乘,即 n! ,那麼其他回答已經說的比較好了,就直接用:
math
.factorial(n
)如果指的是乙個數列依次相乘,那麼沒有工具比NumPy更適合幹這個事了。示例如下:
>>>a=
np.array([1
,2,3
])>>>np.
cumprod(a
)# intermediate results 1, 1*2...# total product 1*2*3 = 6array([1
,2,6
])>>>a=
np.array
([[1,2
,3],[
4,5,
6]])
>>>np.
cumprod(a
,dtype
=float
)# specify type of outputarray
([1.,2.
,6.,24.
,120.
,720.
])numpy.cumprod - NumPy v1.18 Manual
2樓:chenxizhan
import
functools
fact
=lambdan:
reduce
(lambda
acc,
cur:
acc*
cur,
range(1
,n+1
),1)>>>
fact(3
)6>>>
fact(5
)120
>>>fact(0)1
3樓:Zlc晨鑫
我平常用的是C++,對Python的標準庫不怎麼了解,所以不太會用內建函式實現。
那就手工實現!順便說一句,Python自帶高精,再也不用擔心溢位問題啦!
deffac(n
):ans=1
fori
inrange(1
,n+1
):ans*=i
;return
ansn
=int
(input
(fac(n
))或者遞迴實現:
deffac(n
):if(n
==0):return
1else
:returnn*
fac(n-
1)n=
int(
input
(fac(n
))但是不知道Python會不會棧溢位。(反正C++ 是會)就是這樣啦!別忘了驗證一下正確(我可能寫錯)。順便問一句,題主是在學演算法競賽嗎?
4樓:喬木方思
個人覺得,這個問題比較適合自己去探索,而不是提問看答案。
自己探索出來的成就感和滿足感已經收穫是遠遠大於乙個提問帶來的。
python的累乘乙個功能函式就能解決。自己去某度上一搜就出來了,立馬就能解決問題。
如果發現了問題,自己還能解決問題,那多爽。
Python怎麼讓乙個列表中的數字同時乘另乙個數 並生成新的列表?
盜藍 列表解析 a 1,2 3,4 5 b 10c i b foriina 新的列表,速度更快 函式式程式設計 高階函式 map a 1,2,3,4,5 b 10 c generator map lambda a a b,a 生成器,可迭代物件,可以比列表解析有更多更靈活的表達 c list c g...
既然Python是用c語言編寫的,為什麼速度比c慢那麼多
Python那些好用 簡單 安全 動態就是以速度慢為代價換來的。跟Python用什麼語言實現毫無關係。換個角度說 理論上,你用Python編寫乙個程式,執行的比c語言寫的還快也是可能的,快和慢跟實現語言沒關係。跟轉換成什麼樣子的演算法和資料提交給計算機識別執行有關係。 李展發 藏雲 我們管理學裡企業...
關於python遞迴的邏輯困惑?
DavyCloud 其實你的思路基本是對的,但是有一點錯誤 在 def 定義的時候,並沒有發生呼叫!下面寫個小例子感受一下 def foobargt foo Traceback most recent call last File line 1,in File line 2,in fooNameEr...