我遇到了代碼輸出的問題,我想是在檢查列表中null的條件時。在Lisp中不使用mapcar將列表中的數字乘以數字(座標方式)
我想完成的問題是:編寫一個函數vecmul
,它將輸入兩個簡單的數字列表。 vecmul應該乘以這些列表座標明智,因爲你會乘以向量。假設兩個列表長度相同。 [例如,(vecmul '(2 3 4 5) '(1 4 5 2))
返回(2*1 3*4 4*5 5*2)
或(2 12 20 10)
。您不允許使用mapcar
此功能]
到目前爲止,我有
(defun vecmul (list list2)
(cond ((null list) 0)
(t (cons (* (car list) (car list2))
(vecmul (cdr list) (cdr list2))))))
[170]> (setq l '(2 4 6))
(2 4 6)
[171]> (setq r '(1 3 5))
(1 3 5)
[172]> (vecmul l r)
(2 12 30 . 0)
我得到正確的數字,它只是列表中添加「」和列表末尾的「0」。我非常肯定這是因爲我沒有停止遞歸權或者沒有正確使用cond。我只是不完全確定如何糾正它。