我想写一个递归函数来检查String(0和1)是否交替。
例如:
In: 101010
Out: True
In: 110010
Out: False
我如何编写这样的函数,以及如何理解它的逻辑?
答案 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"
才能保持一致性;交替意味着没有重复。