data HuffmanTree
= Empty
| Intermediate Integer HuffmanTree HuffmanTree
| Leaf Char Integer
deriving (Show,Eq)
decode :: HuffmanTree -> [Char] -> [Char]
decode (Intermediate n x y) (z:zs) =
if ..... (some checks for x,y,z).....
then [getChar x] ++ (decode (Intermediate n x y) zs)
在這個函數中我在移動樹上。在「那麼」部分我採用最深的葉子的x和「++」後,我應該再次給整個輸入樹。問題是:++部分之後仍然我的函數接受我當前的樹(最深的葉的父母)。如何解決它? (我不能改變解碼的類型,因爲它是在作業預定義)如何在使用Haskell中的相同函數後使用同一棵樹遞歸函數
答案幫了很大忙。我想這是唯一的方法(已經嘗試了讓步式結構和其他技巧,但都失敗了) – Tomahawk 2015-04-06 02:31:00