2012-11-21 26 views
-4

我想編寫一個遞歸函數來檢查一個字符串(0和1)是否交替。使用haskell中的遞歸檢查交替0和1s

例如:

In: 101010 
Out: True 

In: 110010 
Out: False 

我怎麼能寫這樣的功能,我怎麼理解它的邏輯是什麼?

+0

遞歸不是解決這個問題的最好方法。 – dave4420

+0

顯示您的代碼。 – Marcin

+0

輸入是一個列表還是整數(解釋爲二進制數)? – dave4420

回答

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相同,因爲前兩種情況檢查,所以我們可以繼續前進,並從xs前面檢查。

我們需要"""1""0"給出True以保持一致性;交替意味着不重複。

+1

最後我得到了我的導師。它的工作。謝謝,導師 – sabu