From (iii), G(A) * G(0) = 2*G(A), so G(0) = 2.

Not clear why the problem needs to specify that G(0) is not 0

G(A)*G(A) = G(2A)+G(0), so G(2A) = G(A)^2 - 2

G(2) = 17/4 = 4 + 1/4

G(4) = 257/16 = 16 + 1/16

It looks like **G(A) = 2^A + 2^(-A)**

Yes, that works!

G(A)*G(B) = (2^A + 2^(-A))*(2^B + 2^(-B))

= 2^(A+B) + 2^(A-B) + 2^(B-A) + 2^(-B-A)

= G(A+B) + G(A-B)

In fact, the property that G(A)*G(B) = G(A+B) + G(A-B)

is true if G(A) = x^A + x^(-A)

So it is just a matter of solving for the initial condition.

G(1) = x + 1/x = 2 + 1/2 means that x = 2 or 1/2

And the function is symmetric around 0, which we actually noticed initially because G(A)*G(A) = G(A)*G(-A)

Also, it looks like the range can be bigger than just integers