I was trying to calculate a factorial using recursion like this:
#include <iostream>
using namespace std;
int factorial(int a)
{
    if(a == 0)
    {
        return 1;
    }
    return a*factorial(--a);
}
int main()
{
    int a;
    cin >> a;
    cout << factorial(a) << endl;
    return 0;
} 
and it wasn't working. Then, I made a small change:
#include <iostream>
using namespace std;
int factorial(int a)
{
    if(a == 0)
    {
        return 1;
    }
    return a*factorial(a-1);
}
int main()
{
    int a;
    cin >> a;
    cout << factorial(a) << endl;
    return 0;
} 
... and it started working!
The problem is that I don't see any difference between these codes: Why didn't it work in the first code?
 
    