A recursive solution will make use of itself until a
base case is reached. So, you
keep asking it to ask itself to do stuff until it reaches a known case, at which point it is done. For example, to multiply two positive integers, consider this recursive example:
int Multiply(int a, int b)
{
if(a == 1) return b;
return Multiply(a - 1, b) + b;
}
You could add error checking for negative and zero numbers or what have you, but that's not the point. First, you provide a base case (any number times 1 will be that number). Then, you call Multiply with a different value, assuming it will return the proper value to you. Once you have that value, you can perform a simple addition to return the value to the current call. This function will call itself over and over,
simplifying the problem each time, until the base case is reached and the results are propogated up the call stack to produce the final answer.
Here is the iterative version, for comparision:
int Multiply(int a, int b)
{
int sum = 0;
while(a > 0)
{
sum += b;
a--;
}
return sum;
}
Note that it doesn't call itself. And it doesn't really have a base case (just a terminating condition).