阶乘是基斯顿·卡曼(Christian Kramp,1760~1826)于 1808 年发明的运算符号,是数学术语。
一个正整数的阶乘(factorial)是所有小于及等于该数的正整数的积,并且0的阶乘为1。自然数n的阶乘写作n!。1808年,基斯顿·卡曼引进这个表示法。
亦即n!=1×2×3×…×(n-1)×n。阶乘亦可以递归方式定义:0!=1,n!=(n-1)!×n。
用while循环计算n的阶乘
//计算n的阶乘
//while循环计算n的阶乘
#include
int main()
{
int ret = 1;
int num = 0;
printf("请输入你要输入的数字;\n");
scanf("%d", &num);
if (num==0)
{
ret == 1;
printf("阶乘是:%d\n", ret);
}
else if (num<0)
{
printf("请输入一个大于0的数字\n");
}
else
{
while (num)
{
ret *= num;
num--;
}
printf("阶乘是:%d\n", ret);
}
return 0 ;
}
while方法2:
#include
int main()
{
int ret = 1;
int num = 0;
int i = 1;
printf("请输入你要输入的数字(大于等于0的数字);\n");
scanf("%d", &num);
if (num==0)
{
ret == 1;
printf("%d阶乘是:%d\n", num, ret);
}
else if (num<0)
{
printf("请输入一个大于0的数字\n");
}
else
{
while (i<=num)
{
ret *= i;
i++;
}
printf("%d阶乘是:%d\n", num, ret);
}
return 0;
}
for循环求n的阶乘
//for循环
#include
int main()
{
int ret = 1;
int num = 0;
printf("请输入你要输入的数字;\n");
scanf("%d", &num);
if (num == 0)
{
ret == 1;
printf("阶乘是:%d\n", ret);
}
else if (num<0)
{
printf("请输入一个大于0的数字\n");
}
else
{
for (int i = 1; i <= num; i++)
{
ret *= i;
}
printf("%d阶乘是:%d\n",num, ret);
}
return 0;
}
用do…while求n的阶乘
//do while
#include
int main()
{
int ret = 1;
int num = 0;
printf("请输入你要输入的数字;\n");
scanf("%d", &num);
if (num == 0)
{
ret == 1;
printf("阶乘是:%d\n", ret);
}
else if (num<0)
{
printf("请输入一个大于0的数字\n");
}
else
{
do
{
ret *= num;
num--;
} while (num);
printf("阶乘是:%d\n",ret);
}
return 0;
}
定义函数求n的阶乘
#include
int Fac(int x)
{
int ret = 1;
for (int i = 1; i <= x; i++)
{
ret *= i;
}
return ret;
}
int main()
{
int ret = 1;
int num = 0;
printf("请输入你要输入的数字;\n");
scanf("%d", &num);
if (num == 0)
{
ret == 1;
printf("阶乘是:%d\n", ret);
}
else if (num<0)
{
printf("请输入一个大于0的数字\n");
}
else
{
printf("%d阶乘是:%d\n",num,Fac(num));
}
return 0;
}
递归函数求n的阶乘
//递归函数
#include
int Fac(int x)
{
if (x==1)
{
return 1;
}
else
{
return x*Fac(x - 1);
}
}
int main()
{
int ret = 1;
int num = 0;
printf("请输入你要输入的数字;\n");
scanf("%d", &num);
if (num == 0)
{
ret == 1;
printf("阶乘是:%d\n", ret);
}
else if (num<0)
{
printf("请输入一个大于0的数字\n");
}
else
{
printf("%d阶乘是:%d\n", num, Fac(num));
}
return 0;
}
在循环中,一定要有判断条件使得不满足条件时候能够跳出循环
在while和for循环中,都会先进行判定条件,看是否满足条件进入循环,
在do…while循环中,不管满不满足循环条件,会先执行一次之后才判定,是否再次进入循环。