1.非递归方法
//非递归方法求n的阶乘
#include<stdio.h>
int Fun(int n)
{
int i = 0;
int fac = 1;
if(n < 0)
{
return -1;//n<0阶乘不存在返回-1
}
else if (n == 0 || n == 1)
{
return 1;//n=0或者n=1时返回阶乘结果1
}
else
{
for (i = n; i > 0; i--)
{
fac = fac * n;//n>1从n*n-1*...*1
n--;
}
return fac;
}
}
int main()
{
int n = 0;
scanf("%d", &n);
int ret = Fun(n);//ret接收Fun函数的返回值,用于接下来的判断
if (ret != -1)
{
printf("%d的阶乘是%d\n", n, ret);
}
else
{
printf("%d<0,不存在阶乘\n", n);
}
return 0;
}
2.递归方法
//递归方法求n的阶乘
#include<stdio.h>
int Fun(int n)
{
if (n < 0)
{
return -1;//n<0时,n的阶乘不存在,返回-1
}
else if (n == 0 || n == 1)
{
return 1;//n=0或者n=1时,返回结果1
}
else
{
return Fun(n - 1)*n;//n>1时,采用递归的方式实现求n的阶乘
}
}
int main()
{
int n = 0;
scanf("%d",&n);
int ret=Fun(n);//ret接收Fun函数的返回值,用于接下来的判断
if (ret != -1)
{
printf("%d的阶乘是%d\n", n, ret);
}
else
{
printf("%d<0,不存在阶乘\n", n);
}
return 0;
}