我正在教自己動態編程,並正在練習http://www.geeksforgeeks.org/dynamic-programming-set-9-binomial-coefficient/的問題。我首先嚐試了Java中的問題,我的代碼給出了正確的結果。 Java代碼:使用記憶法計算python中的二項式係數
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];
}
然而,當我試圖在Python中實現,我不能同樣的事情,我得到奇怪的結果,例如當n是5並且k是2時,我得到13,而不是10.我對Python很新,所以可能會丟失一些明顯的東西,但是如果有人能夠幫助,那將不勝感激。 Python代碼:
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]
真棒謝謝你修復它,也可以解釋一下! –
樂於助人。 – Suparshva