用多种方法求解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
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循环中,不管满不满足循环条件,会先执行一次之后才判定,是否再次进入循环。

你可能感兴趣的:(C语言入门学习,c语言)