蜜桃无码视频,欧美日韩一=三道夲,国产精品午夜AV电影网免费看,aaa.www

歡迎來到 常識詞典網(wǎng) , 一個專業(yè)的常識知識學(xué)習(xí)網(wǎng)站!

[ Ctrl + D 鍵 ]收藏本站

您所在的位置:首頁 > 教育學(xué)習(xí) > 知道

知道

在函數(shù)式中,什么是累加器?

分類: 知道 常識詞典 編輯 : 常識 發(fā)布 : 10-23

閱讀 :281

在函數(shù)式編程中,什么是累加器?指函數(shù)式編程中的累加器.2 個答案

答案 1:

因為純函數(shù)式語言是沒有狀態(tài)的,因此在一些循環(huán)計算的時候不能向過程式和OO語言那樣通過修改一個變量來達(dá)到計算的目的,比如對一個列表的數(shù)求和,pyt-on可以這樣:

sum = 0 for num in list: sum += num 而函數(shù)式語言是不能這樣的,只能是使用遞歸,最簡單的形式是(-askell表示): sum :: [Int] -> Int sum (x:xs) = x + sum xs sum [ ] = 0 其實,這里用-askell來做例子是不合適的,因為-askell是lazy evaluation,我們假設(shè)是strict evaluation的,(對不起,今天喝了點酒,lisp一下子也不出來了)。這其實是一個連加式,只有到了最后一項得到0后才能計算出結(jié)果。這是很耗內(nèi)存的。這時候就可以使用累加器了,累加器就是將當(dāng)前的計算結(jié)果放到參數(shù)里,也就是帶著當(dāng)前的狀態(tài)了。 sum :: Int -> [Int] -> Int sum a (x:xs) = sum (a+x) xs sum a [ ] = a 這里的a就是累加器。 因為用的是-askell,這里的累加器不是一個整數(shù),而是一個計算,只有到最后一步返回結(jié)果并且結(jié)果需要一定的計算的時候才會計算成一個整數(shù),否則結(jié)果就是一個連加式的t-unk,如果是lisp一類的strict evaluation語言,每一步的(a + x)都會計算,然后進(jìn)入下一個調(diào)用。即使如此,這兩個實現(xiàn)的區(qū)別還是很明顯的,第一個是普通遞歸,第二個是尾遞歸。如果是lisp,第二個內(nèi)存用量是不變的??偟膩碚f,累加器在strict evaluation的語言里是更常見的。

答案 2:

我估計樓主問的是foldl,foldr中的累加器吧 比如sum可以用foldl實現(xiàn) *Main> foldl (\acc x -> acc + x) 0 [1..10] 55 這個acc被稱為累加器 foldl是個高階函數(shù),它接受一個函數(shù)f作為參數(shù),然后傳兩個參數(shù)給這個函數(shù)f 一個是累加器的初始值,上例中是0,另一個是列表中的第一個元素 函數(shù)f對初始值和第一個元素運算后產(chǎn)生新的累加器(acc+x),然后再取列表中的第二個元素再做同樣的運算,直到全部元素都計算完畢。 另外,上例也可以寫成更簡單的形式 *Main> foldl (+) 0 [1..10] 55

下一篇:支付寶最終的命運是滅亡? 下一篇 【方向鍵 ( → )下一篇】

上一篇:據(jù)說男人婚前覺得女人都不一樣,婚后覺得都一樣,是不是這樣的? 上一篇 【方向鍵 ( ← )上一篇】

国产高清在线看av片| 国产区精品一区| 少妇被黑人到高潮喷出白浆| 东京热无码播放器| 久久成熟熟妇| 欧美精品国产精品日韩电影| 中文字幕精品丝袜久久| 国产精品,日韩无码| 永久在线精品免费视频观看| 一夲久道热线| 无码人妻av一二区二区三区| 中文字幕日韩人妻不卡一区| 日韩在线欧美老妇| 欧美日韩激情综合一区二区不卡| 国语自产拍无码精品视频一区| h在线免费观看| 日韩AV一区二区电影在线看| 蜜桃亚洲精品| 国产手机在线国内精品| 激情小说av在线| 亚洲国产精品欧洲| 久久久免费三级片| 懂色AV一区二区三区观看| 国产男女涩99| 精品推荐久久| 无码中文人妻在线一区| 亚洲v国产v天堂a无码| 欧美自卫喷水| 91精品国产高清久久久久| 日韩欧美一二区| 2019无码在线| 国产精品成人毛片| 亚洲国产综合在线观看不卡| 蜜桃91麻豆av在线观看| 色五月综合国产| 久久久久久久久久国产| 亚洲AV无码动漫在线| AV无套内射论坛| 亚洲成av人片在线观看| 国产在线视频无遮挡| 真人十八禁在线看|