Ceci est la version itérative, mais elle appelle une fonction récursive. Cela aurait-il un effet sur la complexité de son temps/espace?Comment calculer le temps du coefficient binomial et la complexité de l'espace? (itérative vs récursive)
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)));
}
}
Ceci est la version récursive, calculé en utilisant la C (n, k) = C (n-1, k) + C (n-1, k-1) formule.
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, vous pouvez calculer le coefficient binomial C (n, k) en utilisant C (n, k-1)?
Pas exactement répondre à ma question, mais oui, bien sûr, il pourrait être amélioré en utilisant memoization. Toujours curieux de la complexité temporelle/spatiale des algorithmes dans leurs formes actuelles. – Marek
@Marek Ajout de la complexité du temps dans l'édition –