我想编写一个递归函数来检查字符串(0 和 1)是否交替。
例如:
In: 101010
Out: True
In: 110010
Out: False
我该如何编写这样的函数,我该如何理解它的逻辑?
我认为您要求一个函数来检查列表是否在 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
最后一行是这样工作的:
我们知道 ifxs
里面有一个元素,它x
和前两种情况检查的不一样,所以我们可以继续从xs
.
我们需要""
, and "1"
or"0"
给 True 以保持一致性;交替意味着没有重复。