# Faster Ways to compute recursive summation

It takes a long time to compute the summation below, and I'd like to know if there are some better ways to compute things faster. I have used $3$ ways to calculate, but they are very unsatisfactory. I have a list named cu with around $8000$ different members with all rational numbers, and I expect that Mathematica can give me a result with a reasonable time.

Clear[b, k, mu];
b[0] := 1;
b[k_] := ( b[k] = Sum[Binomial[k - 1, m - 1] cu[[m]] b[k - m], {m, 1, k}] );
AbsoluteTiming[ mu = ParallelTable[b[k], {k, 20}]; ]
(* {0.0090005, { ... } } *)


As this recursive definition is not good in computing, I also try to use Faa di Bruno formula and Bell polynomial to calculate.

Clear[b, k, mu];
AbsoluteTiming[ mu = ParallelTable[BellY[Table[{1, cu[[n]]}, {n, k}]], {k, 20}]; ]
(* {0.0220012, { ... } } *)


0.02s are needed for only $20$ terms, then it will be too slow for all $5000$ terms. Hence I also think whether procedural programming implementation is useful.

Clear[b, k, mu];
AbsoluteTiming[ For[k = 1; mu = {}; mu[[0]] = 1, k <= 20, k++,
mu = Append[mu, Sum[Binomial[k - 1, n - 1] cu[[n]] mu[[k - n]], {n, 1, k}]]]; ]
mu = List@Delete[mu, 0];
(* {0.0020001, ... } *)


Unfortunately, it is not good for more terms. Can anyone provide me some methods in Mathematica to calculate as quick as possible?