Wolfram mathematica 如何有效地计算mathematica中的递归关系?

Wolfram mathematica 如何有效地计算mathematica中的递归关系?,wolfram-mathematica,recurrence,Wolfram Mathematica,Recurrence,我要解决一个递归问题 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 但是,下面的mma代码效率很低 f[m_, n_] := Module[{}, If[m < 0, Return[0];]; If[m == 0, Return[1];]; If[m == 1, R

我要解决一个递归问题

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
但是,下面的mma代码效率很低

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[m_,n_]:=模块[{},
如果[m<0,则返回[0];];
如果[m==0,则返回[1];];
如果[m==1,则返回[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[40,20]要花很长的时间。有谁能建议一种有效的方法吗?非常感谢

标准技巧是保存中间值。以下时间为0.000025秒

f[m_, n_] := 0 /; m < 0;
f[0, n_] := 1;
f[1, n_] := n;
f[m_, n_] := (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]);
AbsoluteTiming[f[40, 20]]
f[m_,n_]:=0/;m<0;
f[0,n_]:=1;
f[1,n_]:=n;
f[m,n]:=(f[m,n]=
和[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]]
这不是“解决”递归。您要求的是“实现由递归定义的两个变量组成的函数”。解决一个递归问题需要找到一个直接的m和n公式,而不涉及递归。