이것은 반복 버전이지만 재귀 함수를 호출합니다. 시간/공간의 복잡성에 영향을 미칠까요?이항 계수 시간 및 공간 복잡도를 계산하는 방법은 무엇입니까? (iterative vs. recursive)
int factorial(int n) {
if (n == 1) {
return 1;
}
else {
return n * factorial(n - 1);
}
}
int binomial_coefficient_iterative(unsigned int n, unsigned int k) {
if (k == 0 || k == n) {
return 1;
}
else {
return (factorial(n)/(factorial(k) * factorial(n - k)));
}
}
이것은 C (N, K) = C (N-1, K) + C (N-1, K-1)의 식을 사용하여 계산 재귀 버전이다.
int binomial_coefficient_recursive(unsigned int n, unsigned int k){
if (k == 0 || k == n) {
return 1;
}
else {
return binomial_coefficient_recursive(n - 1, k) + binomial_coefficient_recursive(n - 1, k - 1);
}
}
마지막으로, 만약 C를 사용하여 이항 계수 C (N, k)를 산출 할 수있다 (N, K-1)을?
정확하게 내 질문에 대답하지는 않지만 그래, 확실히 메모 작성을 사용하여 향상시킬 수 있습니다. 현재 형태의 알고리즘의 시간/공간 복잡성에 대해 아직도 궁금해합니다. – Marek
@Marek 편집에 시간 복잡도를 추가했습니다. –