我想写一个递归函数来检查字符串(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
最后一行的工作方式是这样的:
我们知道,如果xs
里面有一个元素,它与x
不同,因为前两种情况检查了这一点,所以我们可以继续前进,从xs
的前面开始检查。
我们需要""
,"1"
或"0"
来给出 True 以获得一致性;交替意味着没有重复。