Mathematica中的递归函数定义

时间:2011-04-18 11:53:37

标签: wolfram-mathematica

Mathematica可以使用RSolve求解递归方程。是否有可能通过重复定义函数,无论是否可以通过分析解决复发?

2 个答案:

答案 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可能会简单得多。