##C++, 188 bytes
C++, 188 bytes
#include <cstdlib>
#include <iostream>
#define y if(b)f(b-1)
int x=0;
void f(int b){y;std::cout<<(x^=1<<b)<<' ';y;}
int main(int,char**v){int b=std::atoi(v[1]);std::cout<<x<<' ';y;}
Specify the number of bits on the command line and it will print a list of space separated integers.