Segmentation fault using recursion to find factorial

Noob here.

The title says it all.

Code:

`//using recursion to find the factorial of an entered number`

#include <iostream>

using namespace std;

int x;

int solution;

int factorial( int counter ) //factorial finding function

{

if ( x < counter )

{

factorial ( x + 1 ); //starts at one, runs the function up until x == the entered number.

}

solution = solution * x; //with the exit of every function, solution is multiplied by the value of the argument.

if ( solution > counter ) //so lets say the numbered entered was 4. it would run the function of 1, 2, 3 than solution (set equal to 4 already) is multiplied by 3, 2, 1.

{

if ( x == 1 ) { return solution; } //the function == 1 when it starts and when it ends. this tid bit makes sure not to return solution when it starts.

}

}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

int main()

{

x = 1;

int number;

int output;

cin >> number;

solution = number; //so that the function works multiplying all numbers less than the entered value

output = factorial ( number ); //runs the function with the entered number.

cout << output << endl;

}

The above code gives me compiles fine but gives me a segmentation fault when I run it.

Any ideas as to why?