使用haskell中的递归检查交替的0和1

时间:2012-11-21 20:14:45

标签: haskell recursion

我想写一个递归函数来检查String(0和1)是否交替。

例如:

In:  101010
Out: True

In:  110010
Out: False

我如何编写这样的函数,以及如何理解它的逻辑?

1 个答案:

答案 0 :(得分:4)

我认为你要求的功能是检查列表是否在0和1之间交替。

我认为这是通过递归来解决这个问题的好方法:

alternates ('1':'1':_) = False   -- always false if it repeats
alternates ('0':'0':_) = False   -- always false if it repeats
alternates [] = True
alternates (x:xs) = alternates xs  

最后一行是这样的:
我们知道,如果xs中有一个元素,它与x不同,因为前两个案例检查了它,所以我们可以继续前进并从{{1的前面开始检查}}。

我们需要xs"""1"才能保持一致性;交替意味着没有重复。