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