haskell-将列表分为奇数(左)和偶数(右)列表

-- split  homework 4/5
split :: [Int] -> ([Int],[Int])
split [] = ([],[])
split [x] | (x `mod` 2 == 1) = ([x],[])
          | otherwise = ([], [x])
split x = (oddlist x, evenlist x)

oddlist :: [Int] -> ([Int])
oddlist [] = []
oddlist (x : xs) | (x `mod` 2 == 1) = x : oddlist xs
                 | otherwise =  oddlist xs

evenlist :: [Int] -> ([Int])
evenlist []= []
evenlist (x : xs) | (x `mod` 2 == 0) =  x : evenlist xs
                 | otherwise = evenlist xs

解释:
①、定义split函数,接受int列表,返回两个int列表。
列表为空时,返回2个空列表。
列表只有一个元素的时候,判断是否为奇数,是的话加入左边列表,否的话,加入右边列表。
列表超过2个元素的情况下,左边调用奇数列表方法oddlist ,右边调用偶数列表生成方法evenlist
②、oddlist 递归奇数列表生成方法:取头元素,判断如果为奇数,返回头元素加上 ,对后面的元素进行二次递归调用。直到列表中为空的时候,停止递归。得到奇数列表
③、evenlist ,同上

谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值