Can someone explain to me why the output is 6? And what does the line return refun(a-1,b-1)*a; mean?
The code is below:
#include <iostream>
using namespace std;
long refun(int a, int b) {
    if (a >= 0 && b == 0)
        return 1;
    else if (a == 0 && b>0)
        return 0;
    else
        return refun(a - 1, b - 1)*a;
}
int main()
{
    int x = 3, y = 2;
    long z = refun(x, y);
    cout << z;
    return 0;
}
 
     
     
    