I am very confused about how can i use currying to write a tail recursive function for summing factorials within a certain bound or summing the bounds i.e. given [1,5] i should be getting 1!+2!+3!+4!+5! and for summing bounds 1+2+3+4+5. How can i construct two elegant functions using currying.
My code currently looks like this:
factorial[n_] := (loopfact[n, acc_] := If[n == 0, acc, loopfact[n - 1, acc*n]];
Return@loopfact[n, 1]);
sum[a_, b_, acc_] := Block[{x, ac}, x = a; ac = acc;
loop[x_, ac_] := If[x > b, ac, loop[x + 1, ac + factorial[x]]];
loop[x, ac]]
sum[0, 5, 0] (* using the function above *)
(* 154 *)
sum[a_, b_, acc_] := Module[{x, ac}, x = a; ac = acc;
loop[x_, ac_] := If[x > b, ac, loop[x + 1, ac + # &@x]];
loop[x, ac]]
sum[0, 50, 0] (* using the second function definition *)
(* 1275 *)
Also could someone kindly explain to me how currying works in Mathematica. Thanks !
Plus @@ Factorial /@ Range[1, 5]
? $\endgroup$