Disclaimer: This article is a blogger original article, follow the CC 4.0 BY-SA copyright agreement, reproduced, please attach the original source link and this statement.
Ideas:
i.e. n factorial n! = n (n-1) (n-2) ...... 2 * 1, realized as long as n (n-1) can be followed or a recursive loop
Source:
Recursion:
#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");
}
Non-recursive (iterative):
#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");
}
operation result: