嗨我需要找到来自[Int]的n:th元素
我想出了代码
getelemt::[Int]->Int->Int
getelemt _ 0 = 0
getelemt (x:xs) n | x==n = x
| otherwise = getelemt xs n
Run Code Online (Sandbox Code Playgroud)
我知道 getelemt (x:xs) n | x==n = x它返回我的x元素==输入元素
作为逻辑,我认为我需要跟上这个函数 如何被递归的时间如何保持这个索引?或任何其他方法?
getelemt::[Int]->Int->Int
getelemt _ n = 0
getelemt (x:xs) n | n==0 = x
| otherwise = getelemt xs n-1
Run Code Online (Sandbox Code Playgroud)
你不能只使用!!?
无论如何你的function(getelemt (x:xs) i)应该这样工作:
如果i是0,你的函数返回x(它得到的参数列表中的第一个元素:x:xs)
否则它会递归,返回 getelem xs (i-1)
你不需要getelemt _ n = 0:它说getelemt应该总是0,因为它总是匹配.
getelemt xs n-1等价于(getelemt xs n)-1你不想要的,你需要n-1加入括号,因为中缀函数的优先级较低.
我建议你从这里学习Haskell ,这对初学者来说很棒.阅读前几章,它们将非常快速而且很好地运行,并且您将更深入地理解Haskell.
| 归档时间: |
|
| 查看次数: |
610 次 |
| 最近记录: |