#include <stdio.h>
long Fact(int n);
int main(void)
{
int n;
long result;
result = Fact(n); /* 调用递归函数Fact()计算n! */
if(result == -1) /* 处理非法数据 */
else /* 输出n!值 */
printf("%d! = %ld\n", n
, result
); return 0;
}
/* 函数功能:用递归法计算n!,当n>=0时返回n!,否则返回-1 */
long Fact(int n)
{
if (n<0)
return -1;
else if (n==0||n==1)
return 1;
else
return(n*Fact(n-1));
}
I2luY2x1ZGUgPHN0ZGlvLmg+CmxvbmcgIEZhY3QoaW50ICBuKTsKaW50IG1haW4odm9pZCkKewogICAgaW50ICBuOwogICAgbG9uZyByZXN1bHQ7CiAgICBwcmludGYoIklucHV0IG46Iik7CiAgICBzY2FuZigiJWQiLCAmbik7CiAgICByZXN1bHQgPSBGYWN0KG4pOyAgICAgICAgICAgIC8qIOiwg+eUqOmAkuW9kuWHveaVsEZhY3QoKeiuoeeul24hICovCiAgICBpZihyZXN1bHQgPT0gLTEpICAgICAgICAgICAgICAvKiDlpITnkIbpnZ7ms5XmlbDmja4gKi8KICAgICAgICBwcmludGYoIm48MCwgZGF0YSBlcnJvciFcbiIpOwogICAgZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiDovpPlh7puIeWAvCAqLwogICAgICAgIHByaW50ZigiJWQhID0gJWxkXG4iLCBuLCByZXN1bHQpOwogICAgcmV0dXJuIDA7Cn0KLyog5Ye95pWw5Yqf6IO977ya55So6YCS5b2S5rOV6K6h566XbiHvvIzlvZNuPj0w5pe26L+U5ZuebiHvvIzlkKbliJnov5Tlm54tMSAqLwpsb25nICBGYWN0KGludCAgbikKewppZiAobjwwKQpyZXR1cm4gLTE7CmVsc2UgaWYgKG49PTB8fG49PTEpCnJldHVybiAxOwplbHNlCnJldHVybihuKkZhY3Qobi0xKSk7CgoKfQo=