[英]Assigning recursive function to a variable in python
我正在用Python編碼霍夫曼樹。 我有一個常規函數,它接受要編碼的字符串和霍夫曼樹。 它創建一個由字符串字符組成的數組和一個空數組,其條目將是與每個字符對應的二進制路徑。 該函數遍歷字符串數組中的每個字符,並調用函數2,該函數遞歸地搜索樹,構建二進制代碼,並在找到字母后將其返回。
一切工作正常-遞歸函數正確地在樹中移動,找到並打印正確的路徑。 唯一的問題是,當我將該返回值分配給function1內部的變量並將其附加到二進制數組時,它變為None
。 您不能為這樣的變量分配遞歸return語句嗎? 任何幫助將不勝感激,因為我覺得自己快要完成了。
這是我的代碼:
def huffmanEncoder(s, t): """encodes string s with Tree t""" s = list(s) b = [] for i in range(len(s)): val = recursiveHuff(t, '', s[i]) print 'val:', val b.append(val) print b def recursiveHuff(tree, path, char): """given a tree, an empty string 'path', and a character, finds said char in tree and returns the binary path""" print 'looking for:\t', char, 'path:\t', path if not isLeaf(tree): recursiveHuff(getLeftChild(tree), path+'0', char) recursiveHuff(getRightChild(tree), path+'1', char) else: n = getNodeValue(tree) if n[1] == char: print 'found', char, 'at', path return path
您的問題是執行遞歸步驟時recursiveHuff不會返回值。 您要累積路徑並返回它。 現在,您對路徑所做的更改在遞歸調用中是本地的。 (因此它們在您下降時沿着鏈條傳播,但在您放松時不會備份)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.