What is the difference between backtracking and recursion? How is this program working?
void generate_all(int n) { if(n<1) printf("%s\\n", ar);
recursion - no values abandoned;
backtracking - abandon some solution candidates;
also note that backtracking will call itself more than once in the body of function, while it's not normally true for recursion