I'm trying to create a table whose elements will be a sum over previously declared elements up to a certain iteration. I've reduced what I'm trying to do to the simplest form (posted below):

M[x_] := M[x] = Table[
    n == 1, r, 2 x^n Sum[M[x][[i]], {i, 1, n-1}]
   {n, 1, 5}]

When I evaluate the above expression, it produces an exceedingly long expression that is obviously wrong. What's the mistake that I'm making here?

  • $\begingroup$ M[x] only references itself here, so it will be an infinite recursion. When you call M[1] for instance, the RHS contains a sum over the elements of M[1]. $\endgroup$ Commented Mar 5, 2016 at 23:14
  • $\begingroup$ I'm sorry I don't understand. Why would it be an infinite recursion? Say for instance, we're on the iteratino n=2 then it should sum from i=1 to i=1 and the expression should be 2x^n M[x][[1]] where x could now be specified. Right? $\endgroup$
    – user38332
    Commented Mar 5, 2016 at 23:25
  • $\begingroup$ Each item M[x] is referenced it must call itself to determine its value. Table must complete and return a value to M[x] before M[x] can be assigned a value. Since the looping is happening inside of Table the calls in Table to M[x] are causing M[x] to be called again in a never ending loop. $\endgroup$
    – Edmund
    Commented Mar 5, 2016 at 23:31
  • 1
    $\begingroup$ Have you seen RecurrenceTable[]? $\endgroup$ Commented Mar 5, 2016 at 23:52
  • $\begingroup$ If I wanted to set the ith element to be the sum of all previous elements would RecurrenceTable[] be able to do the job? $\endgroup$
    – user38332
    Commented Mar 6, 2016 at 0:18

1 Answer 1


I think FoldList is what you are looking for.

m[x_] := FoldList[#1 + #1 2 x^#2 &, Prepend[r]@Range[2, 3]]



{r, r + 2 r y^2, r + 2 r y^2 + 2 y^3 (r + 2 r y^2)}

Just need to change the 3 to a 5.

Hope this helps.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.