簡體   English   中英

遞歸if語句python

[英]Recursive if-statement python

嗨,我是 python 的新手,並試圖實現一個填充表的遞歸函數,但是當通過程序運行時,我得到以下異常

+ 不支持的操作數類型:“NoneType”和“int”。

def cost(i, j):
    if table[i][j] == None:
        v1 = v2 = v3 = v4 = None
        if i > 0 and j > 0:
            print "case1"
            v1 = cost(i-1, j-1) + getSubCostMatrixValue(options[string1[i]], options[string2[j]])
        if i > 0 and j >= 0:
            print "case2"
            v2 = cost(i-1, j) + gapCost
        if i >= 0 and j > 0:
            print "case3"
            v3 = cost(i, j-1) + gapCost
        if i == 0 and j == 0:
            print "case4"
            v4 = 0
        print "Max:"
        print max(v1,v2,v3,v4)
        table[i][j] = max(v1,v2,v3,v4)
        return table[i][j]

問題出現在案例 2 和案例 3 中,好像遞歸調用以某種方式失敗了,但我找不到原因。 我覺得這是顯而易見的事情

table 從一開始就用 None 填充,gabCost 是一個 int,getSubCostMatrixValue 也返回一個 int。

顯然,您的cost()函數在某些情況下返回None 如果我理解正確,那么只有當 i 或 j 為負時才會發生這種情況。 由於這只發生在情況 2 或 3 中,在我看來,您的 i 或 j 確實是浮點數,可以大於 0 但小於 1。可能是這種情況嗎? 如果您提供有關您的程序的更多詳細信息,有人可能會有更詳細的答案!?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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