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

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/zz070/article/details/102750971

思路:

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

源程序:

递归:

#include<stdio.h>
#include<windows.h>
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<stdio.h>
#include<windows.h>
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");
}

运行结果:

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/zz070/article/details/102750971