C练习记录13——求n的阶乘n!(递归和非递归方法)

一个正整数的阶乘(factorial)是所有小于及等于该数的正整数的积,并且0的阶乘为1。
C练习记录13——求n的阶乘n!(递归和非递归方法)_第1张图片

求n的阶乘n!
1.非递归方法

#include

int main()
{
	int n,i;
	unsigned long long factorial = 1;//累积初值赋1,累加赋0
	printf("请输入一个整数:");
	scanf("%d",&n);
	if(n<0)
		printf("Error!负数没有阶乘\n");
	else
	{
		for(i=1;i<=n;i++)
			factorial*=i;
		printf("%d!=%llu\n",n,factorial);
	}
	return 0;
}

2.递归方法

#include

long int factorial(int n)
{
	if(n>=1)
		return n*factorial(n-1);
	else
		return 1;
}

int main()
{
	int n;
	printf("请输入一个整数:");
	scanf("%d",&n);
	if(n<0)
		printf("Error!负数没有阶乘\n");
	else
		printf("%d!=%ld\n",n,factorial(n));
	return 0;
}

C练习记录13——求n的阶乘n!(递归和非递归方法)_第2张图片

你可能感兴趣的:(二级C)