我正在努力复习我的线性代数技能,我也在学习Haskell和思想……为什么不通过做一件事来学习呢?(二鸟一石)
-- Vector
a = [1,0,0]
b = [2,0,4]
subTwoLists (x:xs) (y:ys) = (x-y) : (subTwoLists xs ys)
我真正想了解的是:
(x:xs)
和(y:ys)
:这仅仅意味着a中的所有元素和b中的所有元素?= (x-y)
:应计算a[0] - b[0] = c[0]
,对吗?
这段代码有问题:
subTwoLists :: Num a => [a] -> [a] -> [a]
subTwoLists (x:xs) (y:ys) = (x-y) : (subTwoLists xs ys)
您没有处理基本情况。在递归中,你必须这样做处理基本情况。像这样的代码应该可以工作:
subTwoLists :: Num a => [a] -> [a] -> [a]
subTwoLists [] _ = []
subTwoLists _ [] = []
subTwoLists (x:xs) (y:ys) = (x-y) : (subTwoLists xs ys)
是否表示对a中的所有元素和b中的所有元素都适用?
是的。但是你为什么不自己试试呢?
(x-y): a[0] - b[0] = c[0]对吗?
是的。
另外,请注意您使用的是Lists
,而不是数组。