递归和非递归分别实现求n的阶乘
1.使用递归时我们要考虑n的值
(1)n=1时,n的阶乘为1。
(2)当n>1时,n的阶乘为 n * (n-1) * (n-2) * … * 1.
#include<stdio.h>
#include<windows.h>
#pragma warning(disable:4996)
int Fact(int n)
{
if (n == 1){
return 1;
}
else{
return n*Fact(n - 1);
}
}
int main()
{
int n = 0;
printf("请输入n:");
scanf("%d", &n);
Fact(n);
int ret = Fact(n);
printf("%d的阶乘为:%d\n ", n, ret);
system("pause");
return 0;
}
运行结果:
2.使用非递归
即利用循环
#include<stdio.h>
#include<windows.h>
#pragma warning(disable:4996)
int Fact(int n)
{
int i = 0;
int ret = 1;
for (i = n; i > 0; i--){
ret = ret*n;
n--;
}
printf("阶乘为:%d\n", ret);
}
int main()
{
int n = 0;
printf("请输入n:");
scanf("%d", &n);
Fact(n);
system("pause");
return 0;
}