递归和非递归分别实现求n的阶乘(C语言)

思路:

n的阶乘即n!=n(n-1)(n-2)……2*1,只要实现n(n-1)然后进行循环或者递归即可

源程序:

递归:

#include
#include
int Fac(int n)
{
	if (n == 0 || n == 1){
		return 1;
	}
	return n*Fac(n - 1);
}
void main()
{
	int n;
	printf("请输入您想计算阶乘的数> "); 
	scanf_s("%d", &n);
	int result = Fac(n);
	printf("%d的阶乘是> %d\n", n, result);
	system("pause");
}

非递归(迭代):

#include
#include
int Fac(int n)
{
	int result = 1;
	if (n == 0 || n == 1){
		return 1;
	}
	else{
		while (n > 1){
			 result *= n;
			n--;
		}
	}
	return result;
}
void main()
{
	int n;
	printf("请输入您想计算阶乘的数> "); 
	scanf_s("%d", &n);
	int result = Fac(n);
	printf("%d的阶乘是> %d\n", n, result);
	system("pause");
}

运行结果:

在这里插入图片描述

你可能感兴趣的:(C语言)