1. 递推法
- #include
- long fac(int n)
- {
- int i;
- long fact=1;
- for(i=1;i<=n;i++)
- fact=fact*i;
- return fact;
- }
- void main()
- { long fac(int n);
- int n;
- long fact=0;
- printf("input an integer number:");
- scanf("%d",&n);
- fact=fac(n);
- printf("%d!=%ld\n",n,fact);
- }
-
2.递归法
- #include <stdio.h>
- long fac(int n)
- {
- long f;
- if (n < 0)
- printf("data error!");
- else if (n == 0 || n == 1)
- f = 1;
- else f = n * fac(n - 1);
- return(f);
- }
- void main()
- {
- long fac(int n);
- int n, fact;
- printf("input an integer number:");
- scanf("%d", &n);
- fact = fac(n);
- printf("%d!=%ld\n", n, fact);
- }