向量的递归定义

时间:2013-05-12 10:23:56

标签: function recursion for-loop wolfram-mathematica iteration

我想使用for循环定义一个列表,我需要使用n-iterate的函数来完成它。 我有:

初​​始化

In[176]:  Subscript[y, 0] = {1, 2, 3}

Out[180]:  {1,2,3}

功能:

In[181]:  F[n_] := For[l = 1, l++, l <= 3, Subscript[y, n + 1][[l]] :=Subscript[y, n][[l]]+ n]

我调用了函数

F[0]

我得到了:

In[183]:   Subscript[y, 1]

Out[183]:  Subscript[0, 1]

我应该{1,2,3}

任何人都知道它为什么不能正常工作?

1 个答案:

答案 0 :(得分:0)

我很难重现你的错误,问题。

我了解您要将n添加到向量中,其中n是下标的编号。

这是另一种方法来解决你的问题,避免循环和下标:

Clear@y;
y[0] = {1, 2, 3};
y[n_Integer] : =y[n - 1] + n

(由于PlusListable,您只需将n添加到向量中,即可避免For

然后使用,例如

来调用它
y[0]
{1,2,3}

y[5]
{16,17,18}

或者,使用memoization,您可以按如下方式定义y

y[n_Integer] := y[n] = y[n - 1] + n

然后,这将存储已经计算的值(在执行例如y [5]之后检查?y)。如果Clear发生变化,请不要忘记y y

显然,对于这个函数,您可能需要考虑:

y[n_Integer] := y[0] + Total[Range[n]]