簡體   English   中英

將遞歸函數分配給python中的變量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM