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

  • 本文关键字:haskell 递归 haskell recursion
  • 更新时间 :
  • 英文 :


我想写一个递归函数来检查字符串(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 以获得一致性;交替意味着没有重复。

最新更新