Wolfram mathematica 如何解析地求解mathematica中的递归关系?

Wolfram mathematica 如何解析地求解mathematica中的递归关系?,wolfram-mathematica,Wolfram Mathematica,例如,我有下面的递归,我想得到f[3,n]: f[m_, n_] := Module[{}, If[m < 0, Return[0];]; If[m == 0, Return[1];]; If[2*m - 1 >= n, Return[0];]; If[2*m == n, Return[2];]; If[m == 1, Return[n];]; Return[f[m, n - 1] + f[m - 1, n - 2]];] f[3, n] f[m_,n_]:=模

例如,我有下面的递归,我想得到f[3,n]:

f[m_, n_] := Module[{}, If[m < 0, Return[0];];
  If[m == 0, Return[1];];
  If[2*m - 1 >= n, Return[0];];
  If[2*m == n, Return[2];];
  If[m == 1, Return[n];];
  Return[f[m, n - 1] + f[m - 1, n - 2]];]
f[3, n]
f[m_,n_]:=模块[{},如果[m<0,返回[0];];
如果[m==0,则返回[1];];
如果[2*m-1>=n,则返回[0];];
如果[2*m==n,则返回[2];];
如果[m==1,则返回[n];];
返回[f[m,n-1]+f[m-1,n-2]];]
f[3,n]

代码似乎不起作用。请帮忙。非常感谢

您有一个无限递归,因为当
m
未初始化时,所有边界情况都不匹配

如果使用函数式编程,您将获得更可预测的行为,而不是使用
Return

f[m_, n_] := Which[
  m < 0, 0,
  2 m - 1 >= n, 0,
  2 m == n, 2,
  m == 1, n,
  True, f[m, n - 1] + f[m - 1, n - 2]
  ]

在结果中,您将看到
K[1]
这是一个任意迭代变量,而
C[1]
这是一个自由常数。它之所以存在,是因为没有指定边界情况

您能否准确地描述一下什么“似乎不起作用?”没有理由期望此代码给出分析/符号答案。您想要用于符号的命令是
RSolve[]
,但它在多变量递归关系方面不是很好。@Simon“它不是很好”在这种情况下是相当礼貌的:DSorry,我给出的递归是自相矛盾的。如果我有以下内容:似乎在“m未初始化时”(/.m->n)中有输入错误?
Block[{m = 3},
 RSolve[f[m, n] == f[m, n - 1] + f[m - 1, n - 2], f[m, n], {n}]
 ]