나는 동적 프로그래밍을 가르치려고하고 있으며 http://www.geeksforgeeks.org/dynamic-programming-set-9-binomial-coefficient/에서 질문을 연습하고있었습니다. 먼저 Java에서 질문을 시도했고 코드가 올바른 결과를 제공합니다. Java 코드 :메모를 사용하여 파이썬에서 이항 계수 계산하기
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 일 때 나는 10이 아니라 13을 얻습니다. 저는 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]
고맙습니다. 고쳐 주셔서 감사합니다. , explantsion도 tools! –
도와 드리겠습니다. – Suparshva