-1
您好我是新來的蟒蛇,並試圖實現一個遞歸函數,它填補了一個表,而是通過程序運行時,我得到以下異常遞歸if語句蟒蛇
不支持的操作類型爲+:'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]
問題ocours我的情況下2和3的情況下,彷彿遞歸調用莫名其妙失敗,但我不能找出原因。我覺得這是明顯的東西
表是從開始填充無,gabCost是一個int,getSubCostMatrixValue也返回一個int。
修復您的縮進以及什麼是'gapCost'? max()'如何寫入? – depperm
你不會在任何分支中返回任何東西。像'return v1' ...'return v2'等 –
正確測試'None'是:'if table [i] [j] is None:'。這是因爲'=='可能導致意外的評估爲零或False。我懷疑這是你的問題的原因。 – cdarke