Consider the relations
$$ g_{k}(x) = c(x)\cdot g_{k-1}(x)+d(x), \quad f_{k}(x) = a(x)\cdot f_{k-1}(x)+c(x) g_{k-1}(x) $$ With $g_{0} = G, f_{0}=F$.
How can I get an arbitrary element $g_{k}(x)$ using Mathematica syntax?
Using RSolve
Clear["Global`*"]
sol = RSolve[{g[k] == c*g[k - 1] + d, f[k] == a*f[k - 1] + c*g[k - 1],
g[0] == G, f[0] == F}, {f, g}, k][[1]] /. {a -> a[x], c -> c[x],
d -> d[x]};
f[k_, x_] = f[k, x] /. sol // FullSimplify
(* (F a[x]^(2 + k) (-1 + c[x]) - a[x]^(1 + k) (-1 + c[x]) (F + (F - G) c[x]) +
a[x]^k (-1 + c[x]) c[x] (F - G + d[x]) +
a[x] c[x] (d[x] - c[x]^k (G (-1 + c[x]) + d[x])) +
c[x] (-c[x] d[x] + c[x]^k (G (-1 + c[x]) + d[x])))/((-1 + a[x]) (a[x] -
c[x]) (-1 + c[x])) *)
g[k_, x_] = g[k, x] /. sol // FullSimplify
(* (-d[x] + c[x]^k (G (-1 + c[x]) + d[x]))/(-1 + c[x]) *)
Verifying,
{g[k, x] == c[x]*g[k - 1, x] + d[x],
f[k, x] == a[x]*f[k - 1, x] + c[x]*g[k - 1, x],
f[0, x] == F, g[0, x] == G} // Simplify
(* {True, True, True, True} *)
The recursion strategy seems independent of the x dependence, so I omit it.
My solution is not efficient, but there are many explanations of how to define Factorial recursively for efficiency (storing values already computed). I omit that small step for clarity too. The Simplify below is not necessary.
Define
g[0] = G; f[0] = F
g[k_Integer] := Simplify[c*gk[k-1] + d]
f[k_Integer] := Simplify[a+f[k-1]+c*g[k-1]]
Then
f[2] //InputForm
Gives
2*a + F + c^2*G + c*(d + G)
Rather than Integer, you could test for positive integers.
Bob's answer is better as it solves the recurrence relations once and for all. Depends on what you want.
g[k_,x_]:=If[k>0,c[x]*g[k-1,x]+d[x],G];g[4,Pi]
$\endgroup$Nest[c[x] # + d[x] &, g0[x], k]
or you could solve this problem with aRecurrenceTable
$\endgroup$