首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >试图通过整数列表来理解递归

试图通过整数列表来理解递归
EN

Stack Overflow用户
提问于 2016-02-08 18:23:34
回答 4查看 126关注 0票数 0

我目前正在学习如何在Haskell中使用递归,并试图了解如何遍历整数列表中的每个元素并对它们进行否定。到目前为止,我可以这样做,但只在列表的最后一个元素上,所以我知道错误在最后一行。检查列表中的每个元素,而不仅仅是最后一个元素,最好的方法是什么?

代码语言:javascript
复制
negation :: [Int] -> [Int]
negation [] = []
negation [n] = [-n]
negation(x:xs) = negation xs
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-02-08 18:28:35

尝试使用cons运算符:将负数放在列表的前面。

代码语言:javascript
复制
negation (x:xs) = -x : negation xs

如果你这样做,你可以去掉第三行。

票数 3
EN

Stack Overflow用户

发布于 2016-02-08 18:47:44

编写函数的最佳方法是:

代码语言:javascript
复制
negation :: [Int] -> [Int]
negation xs = map negate xs

{- Example:

>>> map negate [1..5]
[-1,-2,-3,-4,-5]
-}

练习:编写您自己的map版本

代码语言:javascript
复制
myMap :: (a -> b) -> [a] -> [b]
myMap _ [] = _fillMeIn
myMap f (x:xs) = _fillMeIn
票数 2
EN

Stack Overflow用户

发布于 2016-02-08 19:44:07

简单的地图:

代码语言:javascript
复制
  Prelude> let negatList= map (*(-1))

示例:

代码语言:javascript
复制
  Prelude> negatList []
  []
  Prelude> negatList [1]
  [-1]

与递归:

代码语言:javascript
复制
 negation :: [Int] -> [Int]
 negation [] = []
 negation(x:xs) = -x:negation xs
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35276592

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档