#include <iostream>

int H(int n, int x)   // recursive version
{
	if (n <= 0)      
		return -1;
	else if (n == 1) 
		return 1;
	else if (n == 2) 
		return 2 * x;
	else 
		return 2 * x * H(n-1, x) - 2 * n * H(n - 2, x); // shift n+1, n n-1 to n, n-1 n-2 
}

int Hi(int n, int x) //iterative version
{
	if (n <= 0)      
		return -1;
	else if (n == 1) 
		return 1;
		
	int am2 = 1;      // start for for n-2
    int am1 = 2*x;    // start for n-1
	if (n == 2) 
		return am1;

    int am; 
    for (int i=3; i<=n; i++) {
    	am = 2*x*am1 -  2*i*am2;
    	//prepare next interation
    	am2=am1; 
    	am1=am;
    }
	return am; 
}


int main()
{
int n, x;
//std::cout << "Enter the number n: ";
//std::cin >> n;
//std::cout << "Enter the number x: ";
//std::cin >> x;

for (x=5, n=1; n<6; n++) {  
	std::cout << n<<" "<<x<<" Rec = " << H(n, x) << " Iter = " << Hi(n,x) << std::endl;
 	}
}