#include <iostream>
using namespace std;
int factorialRE (long int num1);
int main()
{
int i, num1, factorial; // definicja zmiennej typu int o nazwie num1...
num1 =0;
std::cout << "Enter the number ";
std::cin >> num1; // wczytujemy liczbę
//cout << "The given numer is : " <<num1 <<std::endl;
if (num1 >= 0) // factorial conditions, number must be positive (+)
{
cout << "The given number "<<num1<<" is positive I will count the factiorial ;)"<<std::endl;
/* counts the factiorial */
if (num1==0)
{
factorial = 1;
}
else
{
factorial = 1;
for (i = 1; i <= num1; i++)
factorial = factorial * i;
}
//std::cout << "The "<<num1<<"! factiorial is "<<factorial<<std::endl;
std::cout <<"The "<<num1<<"! factiorial is: "<<factorialRE(num1)<<std::endl;
}
else
{
std::cout << "The given number "<<num1<<" is negative I will not count the factiorial ;("<<std::endl;
}
return 0;
}
int factorialRE (long int num1) //counts the factiorial recursive way
{
int factorial;
if (num1==0)
{
return 1;
}
else
{
return num1 * factorialRE(num1 - 1);
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IGZhY3RvcmlhbFJFIChsb25nIGludCBudW0xKTsKCmludCBtYWluKCkKewogICBpbnQgaSwgbnVtMSwgZmFjdG9yaWFsOyAvLyBkZWZpbmljamEgem1pZW5uZWogdHlwdSBpbnQgbyBuYXp3aWUgbnVtMS4uLgogICBudW0xID0wOwogICBzdGQ6OmNvdXQgPDwgIkVudGVyIHRoZSBudW1iZXIgIjsKICAgc3RkOjpjaW4gPj4gbnVtMTsgLy8gd2N6eXR1amVteSBsaWN6YsSZCi8vY291dCA8PCAiVGhlIGdpdmVuIG51bWVyIGlzIDogIiA8PG51bTEgPDxzdGQ6OmVuZGw7CgogICBpZiAobnVtMSA+PSAwKSAvLyBmYWN0b3JpYWwgY29uZGl0aW9ucywgbnVtYmVyIG11c3QgYmUgcG9zaXRpdmUgKCspCiAgIHsKICAgICAgY291dCA8PCAiVGhlIGdpdmVuIG51bWJlciAiPDxudW0xPDwiIGlzIHBvc2l0aXZlIEkgd2lsbCBjb3VudCB0aGUgZmFjdGlvcmlhbCA7KSI8PHN0ZDo6ZW5kbDsKCiAgIC8qIGNvdW50cyB0aGUgZmFjdGlvcmlhbCAqLwogICAgICAgIGlmIChudW0xPT0wKQogICAgICAgIHsKICAgICAgICAgICBmYWN0b3JpYWwgPSAxOwogICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgewogICAgICAgICAgIGZhY3RvcmlhbCA9IDE7CiAgICAgICAgICAgZm9yIChpID0gMTsgaSA8PSBudW0xOyBpKyspCiAgICAgICAgICAgZmFjdG9yaWFsID0gZmFjdG9yaWFsICogaTsKICAgICAgICB9CiAgIC8vc3RkOjpjb3V0IDw8ICJUaGUgIjw8bnVtMTw8IiEgZmFjdGlvcmlhbCBpcyAiPDxmYWN0b3JpYWw8PHN0ZDo6ZW5kbDsKICAgc3RkOjpjb3V0IDw8IlRoZSAiPDxudW0xPDwiISBmYWN0aW9yaWFsIGlzOiAiPDxmYWN0b3JpYWxSRShudW0xKTw8c3RkOjplbmRsOwogCiAgIH0KICAgZWxzZQogICB7CiAgICAgIHN0ZDo6Y291dCA8PCAiVGhlIGdpdmVuIG51bWJlciAiPDxudW0xPDwiIGlzIG5lZ2F0aXZlIEkgd2lsbCBub3QgY291bnQgdGhlIGZhY3Rpb3JpYWwgOygiPDxzdGQ6OmVuZGw7CiAgIH0KICAgICAgICByZXR1cm4gMDsKfQoKaW50IGZhY3RvcmlhbFJFIChsb25nIGludCBudW0xKSAvL2NvdW50cyB0aGUgZmFjdGlvcmlhbCByZWN1cnNpdmUgd2F5CnsKICAgICAgICBpbnQgZmFjdG9yaWFsOwogICAgICAgIGlmIChudW0xPT0wKQogICAgICAgIHsKICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgIHsKICAgICAgICAgICByZXR1cm4gbnVtMSAqIGZhY3RvcmlhbFJFKG51bTEgLSAxKTsKICAgICAgICB9Cn0KCgo=