das ist mein Code:finden niedrigsten Kosten für eine Bootsfahrt, Mit Rekursion und memoization
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)
der Fehler i ständig erhalte:
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
keinen Hinweis auf dieser Seite finden können, noch in jedes andere, zu diesem Fehler in diesem Zusammenhang. Der Rekursionsaufruf könnte falsch sein?
Was erwarten Sie 'prices (start, i)' zu tun? Meintest du "Preise [(start, i)]", wie du es in 'make_random_prices' machst? – jonrsharpe
sollten Sie nicht 'prices [(start, i)]' anstelle von Preisen (start, i) verwenden? – Fallen
Die Fehlermeldung ist selbsterklärend. Sie versuchen, ein Objekt vom Typ 'dict' aufzurufen. Sie können sehen, dass 'prices' ein' dict' ist, Sie haben es als 'prices = {}' definiert. Dann versuchen Sie es in 'O_C' aufzurufen:' prices (start, i) ', aber' dict' ist nicht aufrufbar. –