Как эффективно вычислять рекурсивные отношения в математике?

У меня есть рекурсия, которую нужно решить.

f(m,n)=Sum[f[m - 1, n - 1 - i] + f[m - 3, n - 5 - i], {i, 2, n - 2*m + 2}] + f[m - 1, n - 3] + f[m - 3, n - 7]
f(0,n)=1, f(1,n)=n

Однако следующий код ММА очень неэффективен

f[m_, n_] := Module[{},
  If[m < 0, Return[0];];
  If[m == 0, Return[1];];
  If[m == 1, Return[n];];
  Return[Sum[f[m - 1, n - 1 - i] + f[m - 3, n - 5 - i], {i, 2, n - 2*m + 2}] + f[m - 1, n - 3] + f[m - 3, n - 7]];]

Для вычисления f требуется невыносимо много времени [40,20]. Может ли кто-нибудь предложить эффективный способ сделать это? Большое спасибо!

6
задан Mr.Wizard 21 December 2011 в 02:30
поделиться