gpt4 book ai didi

function - 在 Lisp 中乘以 2 个列表

转载 作者:太空宇宙 更新时间:2023-11-03 18:49:05 25 4
gpt4 key购买 nike

我有一个将 2 个列表作为输入的函数,我想让第一个列表中的所有内容都与第二个列表中的所有内容相乘,然后计算总和。

到目前为止,这是我的功能:

(defun multiply(a b)
(if (eq a nil)
0
(progn
(* (car a) (car b))
(multiply (car a) (cdr b)))
))

目前我想让它做的就是从第一个列表中取出第一个数字,然后将其与第二个列表中的所有内容相乘。但是,当函数在函数中被重新调用时,我得到了这个错误:

(这是我输入的,'(1 2 3)和'(4 5 6))

值 1 不是列表类型。

(乘以 1 '(5 6))

任何帮助将不胜感激。

最佳答案

loop 是否可以接受?

案例一

如果结果应该是 90

(+ (* 1 4) (* 1 5) (* 1 6) (* 2 4) (* 2 5) (* 2 6) (* 3 4) (* 3 5) (* 3 6))

那么你可以做

(defun multiply (a b)
(loop for i in a
sum (loop for j in b
sum (* i j))))

案例二

如果结果应该是32

(+ (* 1 4) (* 2 5) (* 3 6))

那就是

(defun multiply (a b)
(loop
for i in a
for j in b
sum (* i j)))

关于function - 在 Lisp 中乘以 2 个列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20791963/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com