Я построил рекурсивную функцию для вычисления значений треугольника Паскаля.
Есть ли способ оптимизировать его?
Краткое напоминание о треугольнике Паскаля: 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);
}
Неэффективность, которую я вижу, состоит в том, что она хранит некоторые значения дважды.
Пример:
C (6,2) = C (5,1) + C (5,2)
C (6,2) = C (4,0) + C (4,1) + C (4,1) + C (4,2)
он будет вызывать C (4,1) дважды
Есть идеи, как оптимизировать эту функцию?
Спасибо