所以我无法弄清楚为什么我的数字在这个函数中是负数。此外,计算的输入应该是相同的3的列表,如果有人可以给我一个手,那将非常感激。谢谢。
calculate
获取列表中的第一个数字,然后将其乘以列表中的第二个数字,并从输入列表中减去第三个数字。
((calculate '(8 3 7)) '(4 8 2 9))
应该返回'(29 41 23 44)
(define (calculateHelper n m o L)
(if (null? L) empty
(cons ((calculate n m o) (car L))
(calculateHelper n m o (cdr L)))))
;((calculate 8 3 7) '(4 8 2 9))
(define (calculate n m o)
(lambda (L)
(if (list? L) (calculate n m o L)
(- o (* m (+ n L))))))
答案 0 :(得分:2)
除此之外,你的减法是倒置的。这应该有所帮助:
(define (calculate n m o)
(lambda (L)
(map (lambda (e)
(- (* m (+ n e)) o))
L)))
然后
> ((calculate 8 3 7) '(4 8 2 9))
'(29 41 23 44)
编辑:要使用列表调用calculate
,您可以使用apply
进行解构:
(define (calculate nums)
(apply (lambda (n m o)
(lambda (L)
(map (lambda (e)
(- (* m (+ n e)) o))
L)))
nums))
然后
> ((calculate '(8 3 7)) '(4 8 2 9))
'(29 41 23 44)