那是我的代码:
def O_C(n, prices, start=1, memo=None):
if start == n:
return 0
if memo is None:
memo = {}
if start not in memo:
options = []
for i in range(start + 1, n + 1):
options.append(prices(start, i) + O_C(n, prices, i, memo))
memo[start] = min(options)
return memo[start]
# O_C stands for Optimal Cost
def make_random_prices(N):
import random
prices = {}
for i in range(1, N + 1):
for j in range(i + 1, N + 1):
prices[(i, j)] = random.randint(1, 10*N)
return prices
prices = make_random_prices(100)
print O_C(100, prices)
我不断得到的错误:
Traceback (most recent call last):
File "/Users/Ori/Desktop/OneDrive - mail.tau.ac.il/Python/test/recursion.py", line 48, in <module>
print O_C(100, prices)
File "/Users/Ori/Desktop/OneDrive - mail.tau.ac.il/Python/test/recursion.py", line 32, in O_C
options.append(prices(start, i) + O_C(n, prices, i, memo))
TypeError: 'dict' object is not callable
在此上下文中找不到此站点或任何其他此类错误的任何引用。 递归调用可能是错误的?
答案 0 :(得分:0)
这个错误解释得非常好。在以下代码行中,
options.append(prices(start, i) + O_C(n, prices, i, memo))
使用prices[(start, i)]
访问由元组(start, i)
键入的价格中的值,而不是尝试按prices(start, i)
调用价格 。 价格这是一个字典,而不是可调用的。