вот мой код:Найти наименьшую стоимость поездки на лодке, с помощью рекурсии и запоминанием
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
Не можете найти какой-либо ссылки на этом сайте, ни в любой другой, к этой ошибке в этом контексте. Ошибка рекурсии может быть неправильной?
Что вы ожидаете 'цены (начало, i)' делать? Вы имели в виду 'prices [(start, i)]', как вы делаете в 'make_random_prices'? – jonrsharpe
разве вы не должны использовать 'prices [(start, i)]' вместо цен (start, i)? – Fallen
Сообщение об ошибке само собой разумеется. Вы пытаетесь вызвать объект типа 'dict'. Вы можете видеть, что 'цены' являются' dict', вы определили его как таковые 'prices = {}'. Затем в 'O_C' вы пытаетесь называть его:' prices (start, i) ', но тип' dict' не может быть вызван. –