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

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

[ Ctrl + D 鍵 ]收藏本站

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

知道

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

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

閱讀 :291

在函數(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无码精品色午夜APP| 九九精品国产三级| 久久久无码精品亚洲第9页| 亚洲涩涩综合| 乱人乱色一区二区三区免费| 高清国产午夜精品久久久久久| 97人人模人人爽人人爽喊| 国产精品午夜自在在线| 无码人妻6| 日本亚洲国产中文一区二区三区| 一及黄片免费视频| 人妻无码中文专区久| 欧美BBBWWW激情| 少妇人妻综合久久中文字幕| 丝袜美女翘臀视频| 人妻在线视频免费| 人人澡人人草| 亚洲AV无码一区二区三区bv| 国产在线国偷精品免费看| 免费无码在线观看国产不| 韩国日本WWWXXX| 亚洲av无码国产在丝袜线观看| 欧美亚日韩综合一区二区三区视频| 亚洲国产日韩在线精品频道| 精品国产9999精品| 国产网址一二三四| 久久综合伊人精品| 四虎精品| 久久久久久九九99精品| 欧美三级中文字幕在线观看| 十八禁美女网站| 久久精品国产电影| 国内精品视频在线九九视频| 91神马影院三区| 国产午夜精品一本| 亚洲嫩模高喷白浆在线观看| 东港市| 亚洲欭美日韩颜射在线| 中文字幕巨乱亚洲网站| 同性恋网站|