#include<iostream>
#include<limits>
using std::cin;
using std::cout;
using std::endl;
template<class T>
bool input(T& a)
{
int i = 1;
while(true)
{
cin >> a ;
if(cin && a >= 0)
return true;
else
{
if(i == 3) return false;
if(!cin)
{
cin.clear();
cin.ignore((std::numeric_limits <int> ::max)(), '/n');
}
cout << "the input is not ge than 0"
<< "do you want to try again? Y / N "
<< endl;
char ch;
cin >> ch;
if(ch != 'Y' && ch != 'y' ) return false;
++i;
}
}
}
int fn(int n)
{
if(n <= 1)
return 1;
else
return n*fn(n-1);
}
int main()
{
cout << "please input a number" << endl;
int n;
input(n) ;
cout << "n! =/t" << fn(n) << endl;
return 0;
}