This is the iterative version, but it calls a recursive function. Would that have an effect on its time/space complexity?
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) ) );
}
}
This is the recursive version, calculated using the C(n, k) = C(n-1, k) + C(n-1, k-1) formula.
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);
}
}
Last but not least, can you calculate the binomial coefficient C(n, k) by using C(n, k-1)?