La ricorsione in C++

#include <cstdlib>
#include<iostream>


using namespace std;

/*
 * 
 */

int calc(int n)
{
    if(n==1)
        return 1;
    else if(n==2)
        return n*calc(n-1);
    else if(n==3)
        return n*calc(n-1)-calc(n-2);
    else
        return n*calc(n-1)-calc(n-2)-calc(n-3);
}



int main(int argc, char** argv) {

    int n=6;
    

    cout<<calc(n)<<endl;
    
    
    
    return 0;
}