0

我的代码有问题。因为我无法从嵌套函数内部的外部函数访问列表。我尝试了非本地,但它给了我一个错误“发现非本地“a”的非绑定。

def func(x, y):
        nonlocal a
        nonlocal b
        if x >= 0 and y >= 0:
            if x == 0 and y == 0:
                return (func(x - 1, y - 1) + a[x] * b[y])

            else:
                return max(func(x - 1, y - 1) + a[x] * b[y], func(x - 2, y) + a[x - 1] * a[x], func(x, y-2) + b[y - 1] * b[y])
        elif x >= 1 and y < 0:
            return func(x - 2, y) + a[x - 1] * a[x]

        elif y >= 1 and x < 0:
            return func(x, y-2) + b[y - 1] * b[y]
        else:
            return 0

def tvshows(a, b):

    x = func(len(a) - 1, len(b) -1)
    return x

test_a = [23,45, 12, 16]
test_b = [33,13, 17, 18]

tvshows(test_a, test_b)

有谁知道问题可能是什么?此致

4

1 回答 1

0

nonlocal要求变量之前已定义

我在您的代码中看不到任何嵌套函数。但是您可以nonlocal在嵌套函数(而不是外部函数)内部使用来引用先前定义的列表。

于 2019-05-12T20:05:49.193 回答