This question already has answers here:
Cartesian product of 2 lists in Haskell
(14 个回答)
8年前关闭。
我知道如何使用列表理解来做到这一点,但是如何实现一个函数来递归计算给定两组的笛卡尔积?
这就是我被卡住的地方(我是一个菜鸟)
这个输出给了我
如果集合分别是
我将如何获得其余的?
(14 个回答)
8年前关闭。
我知道如何使用列表理解来做到这一点,但是如何实现一个函数来递归计算给定两组的笛卡尔积?
这就是我被卡住的地方(我是一个菜鸟)
crossProd :: [Int] -> [Int] -> [(Int,Int)]
crossProd xs ys | xs == [] || ys == [] = []
| otherwise = (head xs, head ys) : crossProd (tail xs) (ys)
这个输出给了我
如果集合分别是
[1,2,3]
和 [4,5,6]
..我将如何获得其余的?
最佳答案
最基本的情况是这样的:
{-crossProdAux :: Int -> [Int] -> [(Int,Int)]-}
crossProdAux x [] = []
crossProdAux x (a:b) = (x, a):(crossProdAux x b)
{-crossProd :: [Int] -> [Int] -> [(Int,Int)]-}
crossProd [] ys = []
crossProd (a:b) ys= (crossProdAux a ys)++(crossProd b ys)
关于Haskell笛卡尔积递归,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14887973/
10-13 09:11