thetalist = {1.36386, 0.720838, 0.504584, 0.154796, 1.83031};
Method 1:
Clear[expR]
expR[0, theta_] = 1;
expR[m_Integer?Positive, theta_] :=
expR[m, theta] = expR[m - 1, theta]*Exp[-I*theta]
list11 = expR[#, theta] & /@ Range[0, 20];
list11[[1 ;; 5]]
(* {1, E^(-I theta), E^(-2 I theta), E^(-3 I theta), E^(-4 I theta)} *)
More generally,
FindSequenceFunction[list11[[2 ;; 10]], m] // PowerExpand
(* E^(-I m theta) *)
list12 = expR[20, thetalist]
(* {-0.542712 - 0.839919 I, -0.275965 - 0.961168 I, -0.785742 +
0.618555 I, -0.998957 - 0.0456568 I, 0.459902 + 0.88797 I} *)
list12 == Exp[-I 20 thetalist]
(* True *)
Method 2 : Using RSolve
Clear[expR]
expR[m_, theta_] =
expR[m, theta] /.
RSolve[{expR[0, theta] == 1,
expR[m, theta] == expR[m - 1, theta]*Exp[-I*theta]},
expR[m, theta], {m, theta}][[1]] // PowerExpand
(* E^(-I m theta) *)
which is identical to the result from FindSequenceFunction above
list21 = expR[#, theta] & /@ Range[0, 20];
list22 = expR[20, thetalist]
(* {-0.542712 - 0.839919 I, -0.275965 - 0.961168 I, -0.785742 +
0.618555 I, -0.998957 - 0.0456568 I, 0.459902 + 0.88797 I} *)
list22 == Exp[-I 20 thetalist]
(* True *)
Verifying that both methods are equivalent for nonnegative, integer m
list11 == list21
(* True *)
list12 == list22
(* True *)