Ich schreibe einen dynamischen Programmieralgorithmus in Python
, die perfekt für kleinere Eingaben funktioniert, aber es Timeout für große Eingaben wahrscheinlich wegen der rekursiven Aufrufe. Ich lese diese article online, die besagt, dass die meisten modernen Programmiersprachen nicht mit Rekursion gut umgehen, und es ist eine bessere Idee, sie in eine iterative Methode zu konvertieren.Beschleunigen rekursive Methode durch Umwandlung in iterative
Mein Algorithmus ist wie folgt:
def get_val(x,y,g,i,xlast,ylast):
# checks if array over
if(i>(len(x)-1)):
return 0
# else returns the max of the two values
# dist returns the euclidian distance between the two points
# the max condition just decides if it's profitable to move to the
# next x and y coordinate or if it would be better to skip this particular (x, y)
return max(g[i]-dist(x[i],y[i],xlast,ylast) + get_val(x,y,g,i+1,x[i],y[i]),get_val(x,y,g,i+1,xlast,ylast))
Ich habe versucht, ihre Leistung zu verbessern, aber ich bin nicht wirklich sicher über die Schritte, die ich nehmen sollte, um sicherzustellen, dass es nicht auf große Eingänge hat eine Zeitüberschreitung .
können Sie den Eingang und den erwarteten Ausgang, wie ein kleines Beispiel – Stack
Was tut Ihre Funktion * tun bieten zu lösen *? –
Ich aktualisierte die Frage, um weitere Informationen hinzuzufügen – anonn023432