1

我想写一个递归函数来计算符号变量。这是python中的一个例子:

x = ["x0",...]
y = ["y0",...]
def f(n):
    if n<=0:
        return x[0]
    t1 = x[n]
    t2 = y[n]
    r = f(n-1)
    return t1+t2+r

如何在 Mathematica 中重新实现它?

我尝试手动创建变量名:

toFixedWidth[n_Integer, width_Integer] := \
StringJoin[PadLeft[Characters[ToString[n]], width, "0"]]
make_var[i_] := ToExpression[StringJoin["x", toFixedWidth[i, 2]]]
xtab := Table[{make_var[i]}, {i, 0, 10}]
xtab

但它不起作用:

{{make_var[0]}, {make_var[1]}, {make_var[2]}, {make_var[3]}, {
  make_var[4]}, {make_var[5]}, {make_var[6]}, {make_var[7]}, {
  make_var[8]}, {make_var[9]}, {make_var[10]}}

我想看看表达式是如何展开的(对于比示例中更复杂的函数),这就是为什么我希望所有变量都是符号的。

4

1 回答 1

3

下划线保留用于模式匹配 ( Blank)。请尝试makevar

toFixedWidth[n_Integer, width_Integer] := 
 StringJoin[PadLeft[Characters[ToString[n]], width, "0"]]
makevar[i_] := ToExpression[StringJoin["x", toFixedWidth[i, 2]]]
xtab := Table[{makevar[i]}, {i, 0, 10}]
xtab
{{x00}, {x01}, {x02}, {x03}, {x04}, {x05}, {x06}, {x07}, {x08}, {x09}, {x10}}

顺便:

Table[Unique["x"], {11}]
{x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11}
于 2012-07-01T13:00:25.513 回答