OK, that's clear enough. q^n gives successive terms in the series f[n], and is solvable for q. From the roots, we're able to generate the additively recursive sequences, which are also geometric, including the canonical Fibonaccis.
My curriculum gets to the same NCLB polynomial via the Euclidean approach of using lengths, and asking how a smaller part to a larger part might be equivalent to the ratio between a larger part and the whole. That nets us Phi, which we then explore as the most irrational number by some measures, but as the simplest continued fraction i.e.:
phi = 1 + 1/(1 + 1/(1 + 1/...)).
We develop the Fibonacci's separately, under the more generic heading of sequences (convergent/divergent, oscillatory/static, chaotic, and also: arithmetic, geometric, recursive, interpolative...).
Simple sequences (per Encyclopedia of Integer Sequences) represent our chance to write simple computer programs (4-10 liners), and to connect to figurate and polyhedral numbers, ala the triangulars and tetrahedrals in Pascal's Triangle. We do cuboctahedrals and icosahedrals as well (no, not optionally -- too important to skip (Alexander Graham Bell, ya know)).
What converges to phi, as the Fibonacci's diverge, is the ratio between f[n+1] and f[n]. Whether we want to jump from here to your generative polynomial piece would be at student/teacher disgression. Definitely it's a connected topic. There's also going from continued fractions to Diophantine equations, as discussed previously (a few weeks ago), and to interesting representations of roots. It's a vast network, and the trick is to pick an intelligible path that (a) hangs together (b) tells a good story (isn't too boring) (c) contains life-relevant skill building.
I connect the dots using a computer language approach at my Oregon Curriculum Network website. Were I to add a piece along the lines suggested by you and VS, it might look something like (see Plain Text for proper indentation):
>>> def genpoly(c0, c1, roots): def somefunc(): n = 0 while True: yield c0*roots**n + c1*roots**n n += 1 return somefunc