⽤多种⽅法求解n的阶乘(循环)
阶乘
阶乘是基斯顿·卡曼(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<stdio.h>c语言用递归函数求n的阶乘
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);
}
return0;
}
while⽅法2:
#include<stdio.h>
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);
}
return0;
}
for循环求n的阶乘
//for循环
#include<stdio.h>
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);
}
return0;
}
⽤do…while求n的阶乘
//do while
#include<stdio.h>
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);
}
return0;
}
定义函数求n的阶乘
#include<stdio.h>
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)); }
return0;
}
递归函数求n的阶乘
//递归函数
#include<stdio.h>
int Fac(int x)
{
if(x==1)
{
return1;
}
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));
}
return0;
}
注意:
在循环中,⼀定要有判断条件使得不满⾜条件时候能够跳出循环
在while和for循环中,都会先进⾏判定条件,看是否满⾜条件进⼊循环,
在do…while循环中,不管满不满⾜循环条件,会先执⾏⼀次之后才判定,是否再次进⼊循环。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。