Is top-down dynamic programming always recursive?

I think top-down dynamic programming is mostly recursive. For instance, solving the rod-cutting problem by this algorithm:

CUT-ROD(p, n)
 1 if n == 0
 2   return 0
 3 q = -infty
 4 for i = 1 to n:
 5   q = max(q, p(i) + CUT-ROD(p, n - i))
 6 return q

But is it always recursive?