我的問題是使用Racket R5RS語言製作一個簡單的正負號程序。問題的基本思想是在列表中的每個元素前面加上/減號,並檢查結果是否是列表中的元素之一。下面是我現在所擁有的:如何迭代列表中的每個元素而不刪除方案中的元素
(define plus-minus (lambda (lst l sum)
(cond
((null? lst)
(cond
((null? l) #f)
((= sum (car l)) #t)
(else (plus-minus lst (cdr l) sum))))
((plus-minus (cdr lst) l (+ sum (car lst))) #t)
((plus-minus (cdr lst) l (- sum (car lst))) #t)
(else #f))))
此代碼工作,但它是必需的,應該有一個且只有一個在參數列表中且其他所有的數字。我的代碼中的前兩個參數在首次調用函數時是相同的。第一個是獲得總和的人。第二個是檢查和是否等於列表中的元素之一。這兩個列表都是必需的,因爲當我得到總和時,第一個列表中的元素被刪除。
我的問題是,如何擺脫參數中的第二個列表?無論如何,我可以遍歷列表而不刪除元素(CDR表示)?