Я построил рекурсивную функцию для вычисления значений треугольника Паскаля.
Есть ли способ оптимизировать его?
Краткое напоминание о треугольнике Паскаля: C(n, k) = C(n-1, k-1) + C(n-1, k) Мой код:
int Pascal(int n, int k) {
if (k == 0) return 1;
if (n == 0) return 0;
return Pascal(n - 1, k - 1) + Pascal(n - 1, k);
}
Неэффективность, которую я вижу, заключается в том, что он сохраняет некоторые значения дважды. Пример: С(6,2) = С(5,1) + С(5,2) С(6,2) = С(4,0) + С(4,1) + С(4,1) + C(4,2) дважды вызовет C(4,1)
Любая идея, как оптимизировать эту функцию?
Спасибо
O(Sum(C(n, i) for i from 0 to k))
доO(C(n, k))
. - person Neil   schedule 23.02.2011