Mathematica可以使用RSolve求解递归方程。是否有可能通过重复定义函数,无论是否可以通过分析解决复发?
答案 0 :(得分:6)
是。看看RecurrenceTable
。也可以通过其递推方程来编程来定义函数,因子是最简单的例子。
In[94]:= fac[1] = 1;
fac[k_Integer?Positive] := k*fac[k - 1]
In[96]:= fac[10]
Out[96]= 3628800
In[97]:= Function[If[#1 == 1, 1, #1*#0[#1 - 1]]][10]
Out[97]= 3628800
In[100]:= RecurrenceTable[
f[k] == k f[k - 1] && f[1] == 1, f, {k, 1, 10}]
Out[100]= {1, 2, 6, 24, 120, 720, 5040, 40320, 362880, 3628800}
答案 1 :(得分:0)
我想知道RecurrenceTable有什么好处,直到我用NestList改写了Sasha的例子:
Rest@NestList[{1, 0} + First@# {1, Last@#} &, {1, 1}, 10][[All, -1]]
{1, 2, 6, 24, 120, 720, 5040, 40320, 362880, 3628800}
如果k(First @#)的参与很复杂,RecurrenceTable可能会简单得多。