簡體   English   中英

球拍復雜的減少功能

[英]Racket complex reduce function

我試圖以比通常預期的方式更復雜的方式使用reduce函數。 我什至不確定這是否可行,但這是我想要做的:

給定一個列表(1 2 3)和兩個常量,讓它們分別為913 ,我試圖使用reduce結束:

(+ 1 (* 9 (+ 2 (* 9 (+ 3 (* 9 13))))))

我嘗試了將13加到then列表后面的方法,所以我不得不(1 2 3 13)然后嘗試使用Lambda進行映射並歸約,但我無法獲得正確的答案。

我會發布我嘗試過的代碼,但我的互聯網已斷開,我正在手機上鍵入此代碼,所以很抱歉,我無法顯示我嘗試執行的操作,但目標是上面使用reduce的表達式形式

所提出的操作確實可以作為實施reduce (又名foldr ):

(+ 1 (* 9 (+ 2 (* 9 (+ 3 (* 9 13))))))
=> 9739

(reduce (lambda (e acc) (+ e (* 9 acc)))
        13
        '(1 2 3))
=> 9739

關於常量, 13在最里面的表達式中僅使用一次,因此很適合用作初始值。 9用於累加累加值。 當遞歸開始展開時,輸入列表從右到左使用,這時我們將當前元素添加到累加結果中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM