Здравствуйте!
Алгоритм подсчета бинома, как я понимаю, по формуле Бернули.
Также он использует рекурентную формулу нахождения кол-ва сочетаний
Сам алгоритм:
public double binomial1(int N, int k, double p) {
if (N == 0 && k == 0) return 1.0;
if (N < 0 || k < 0) return 0.0;
return (1.0 - p) *binomial1(N-1, k, p) + p*binomial1(N-1, k-1, p);
}
Вопросы:
Как так получается, что у нас (1.0 - p) и p в рекурентном выражении без степеней? Ведь по формуле Бернули должны быть. Я понимаю, что там в рекурсии, видимо, они несколько раз сами на себя умножаются, но распутать клубок не могу?
Есть ли какие-то методы для анализа подобных алгоритмов/формул, и для создания этих формул. Как-то ведь до написания подобного кода люди доходят?
Сам код взял из
книги Седжвика по алгоритмам, начал проходить курс на coursera.