// factorial.c
#include <stdio.h>
int fact(int n)
{
if (n < 0)
return 0;
else if (n == 1 || n == 0)
return 1;
else
return n-- * fact(n);
}
int main(void)
{
for (int i = -1; i <= 10; i++)
printf("%d! = %d\n", i, fact(i));
return 0;
}
// factorial.c
#include <stdio.h>
/* a初始化为1 */
int fact(int n, int a)
{
if (n < 0)
return 0;
else if (n == 0)
return 1;
else if (n == 1)
return a;
else
return fact(n - 1, n * a);
}
int main(void)
{
for (int i = -1; i <= 10; i++)
printf("%d! = %d\n", i, fact(i, 1));
return 0;
}
原文:https://www.cnblogs.com/noonjuan/p/12102547.html