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