繁体   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