Ich versuche, mich selbst dynamische Programmierung beizubringen und übte eine Frage aus http://www.geeksforgeeks.org/dynamic-programming-set-9-binomial-coefficient/. Ich habe zuerst die Frage in Java versucht und mein Code gibt die richtigen Ergebnisse. Java-Code:Ausarbeitung des Binomialkoeffizienten in Python mit Memoization
static int calculate(int n, int k){
if(k == 0 || k == n)
return 1;
if(dp[n][k] != Integer.MAX_VALUE)
return dp[n][k];
else
dp[n][k] = calculate(n - 1, k -1) + calculate(n-1, k);
return dp[n][k];
}
aber als ich versuchte, die gleiche Sache in Python zu implementieren, konnte ich nicht und seltsame Ergebnisse bin immer, z.B. wenn n 5 ist und k 2 ist, bekomme ich 13, nicht 10. Ich bin ziemlich neu bei Python, also mag etwas offensichtliches fehlen, aber wenn jemand helfen könnte, würde das sehr geschätzt werden. Python-Code:
dp = [[-1] * 3] * 6
def calculate(n, k):
if n == k or k == 0:
return 1
if dp[n][k] > 0:
return dp[n][k]
else:
dp[n][k] = calculate(n-1, k-1) + calculate(n-1, k)
return dp[n][k]
Ehrfürchtig danke, dass es behoben Danke für die Erklärung! –
Gerne helfen. – Suparshva