First, let's understand what a power set is. According to wikipedia:
A power set ... is the set of all subsets of S, including the empty set and S itself.
With recursion, we care about two things: the "Base Case" and the "N+1 Case". In regards to a Power Set, the base case is a set containing the empty set:
f({}) => {{}}
The N+1 case assumes that you already have the power set of N (f(N)), and are merely looking at the difference between that powerset and the one where you add a single element to N. Why is this important? Well, because the idea behind recursion is to solve progressively simpler problems until you reach your base case. This step will be the same for every n above your base case:
f({a}) => {{a},{}}
+ b => {{a,b}, {a}, {b}, {}}
So what is the difference between these two sets? Well, for each element in the original set, we've both taken that element AND added b to that element. (N.B. each 'element' here is a set.)
Lets do this in pseudo code:
function addElement(someSet, newElement)
for each element in someSet // {a} and {} in the example
add newElement to that set // should return {{a,b},{b}}
take the new set of sets and add someSet // add in {a} and {} (someSet, the original set)
Writing your full function is now a matter of invoking this for each member of your original set. This is where your base and N+1 cases come in:
function powerSet(originalSet)
if originalSet is empty, return a set of the empty set // {{}} (VERY important it is a set of sets!)
else
get the powerSet of the originalSet minus one element //this is the recursive call
call addElement on that result and the element you took away
return this result
I leave converting this to code to you, but it should be pretty straightforward.