Python 2, 37 bytes (-1 @Steffan, -2 @dingledooper)
f=lambda x,n:[1][n:]or[x**n]+f(x,n/2)
Old Python, 40 bytes
f=lambda x,n:[x**n]+(n*[n]and f(x,n//2))
Doesn't actually implement the algorithm. But produces correct output.
f=lambda x,n:[1][n:]or[x**n]+f(x,n/2)
f=lambda x,n:[x**n]+(n*[n]and f(x,n//2))
Doesn't actually implement the algorithm. But produces correct output.