gpt4 book ai didi

lisp - 在 lisp 中乘以 2 个向量

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

我正在尝试用 lisp 将两个向量相乘。我的代码是:

(defun produs(x y)
(cond
((or (null x) (null y))
nil)
((eq (cdr x) nil)
(cons (* (car x) (car y))
(cdr y)))
((eq (cdr y) nil)
(cons (* (car x) (car y))
(cdr x)))
(t
(cons (* (car x) (car y))
(produs (cdr x) (cdr y))))))

当我验证

(produs '(7) '(1 2))

它给了我 (7 2)。

第 4 行代码没有指定如果 x 主体的其余部分为 nil,则将其与 y 的所有元素相乘?

最佳答案

如果我正确地理解了你想要实现的目标,那么这段代码应该可以工作:

(defun produs(x y)
(cond
((or (null x) (null y)) nil)
((eq (cdr x) nil) ( cons (* (car x)(car y))(produs (cdr y) x )))
((eq (cdr y) nil) ( cons (* (car x)(car y)) (produs (cdr x) y)))
(t (cons (*(car x)(car y)) (produs (cdr x)(cdr y))))
)
)

问题是您不是“说”将所有元素与头部 x 相乘,而是只是将 y 中的所有剩余元素添加到结果列表中。

(produs '(7) '(1 2)) => (7 14)

关于lisp - 在 lisp 中乘以 2 个向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34055155/

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