0
我被要求在Python中創建函數,而不使用循環和樹來表示霍夫曼編碼。我創建的函數從該輸入:Python中的遞歸霍夫曼編碼
[('a',4),('b',10),('c',15),('d',18),('e',42),('f',11)]
給出了這樣的輸出:
('e', (('f', ('a', 'b')), ('c', 'd')))
現在,我應該創建功能,該輸出編碼成
[('e','0') , ('f','100') , ('a', '1010') , ('b' , '1011') , ('c', '110') , ('d','111') ]
我不知道如何(不使用循環)將元組更改爲列表,並同時將1
和0
添加到某些元素。
你知道什麼是遞歸函數嗎?因爲我很確定「不使用循環」意味着你應該寫一個遞歸函數。看看輸入格式:它是一個包含兩個元素的元組,每個元素都是一個字母或另一個元組。這應該告訴你如何遞歸分解它。 – abarnert 2014-11-06 00:07:56
學習遞歸更多。 **提示:**遞歸是一個循環,只是形式不同而已。 – 2014-11-06 00:08:11
另外,我不確定這是如何「不使用樹木」;嵌套列表(或元組)是表示樹的最明顯的方法之一(因爲任何基於Lisp的教科書中的一半練習都證明了......)。 – abarnert 2014-11-06 00:09:59