Оптимизация рекурсивной программы треугольника Паскаля в C ++

Я построил рекурсивную функцию для вычисления значений треугольника Паскаля.

Есть ли способ его оптимизировать?

Краткое напоминание о треугольнике Паскаля: 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) + С (4,2) он вызовет C (4,1) дважды

Есть идеи, как оптимизировать эту функцию?

Спасибо

5
задан JohnG 26 February 2011 в 18:29
поделиться