2024-03-19 02:45:09 +08:00

63 lines
768 B
C

#include <stdio.h>
// 使用栈的方式计算阶乘
struct stack
{
int val[100];
int pos;
} s;
void push(int i)
{
s.val[s.pos++] = i;
}
int pop()
{
if (s.pos == 0)
{
return 0;
}
return s.val[--s.pos];
}
int fac2(int n)
{
int result = 1;
for (int i = n; i > 0; i--)
{
result *= i;
}
return result;
}
int fac1(int n)
{
if (n == 1)
return 1;
else
return n * fac1(n - 1);
}
//这算么?
int fac3(int n)
{
do
{
push(n);
} while (--n);
int i = 0, result = 1;
while (i = pop())
{
result *= i;
}
return result;
}
int main()
{
printf("%d\n", fac1(10));
printf("%d\n", fac2(10));
printf("%d", fac3(10));
getchar();
}