As an exercise I had to write a recursive function that computes the greater common denominator between two numbers. Before the use of a few brain cells that made me write one good answer:

Code:

int gcd(int a, int b)
{
if (b == 0)
return a;
else
return gcd(b, a % b);
}

I wrote the same function as follows:

Code:

int gcd(int a, int b)
{
int temp;
if (b != 0)
{
temp = b;
b = a % b;
a = temp;
gcd(a, b);
}
else
return a;
}

Although the program worked correctly I can't understand one thing.

What happens to the functions that are expected to return a value (int) but they won't return any?

They do not seem to wrap up after *gcd(a, b=0)* returns the correct result to the program.

Thank you for your time to read my post !!!