免責事項:この記事はブロガーオリジナル記事です、続くBY-SAのCC 4.0を著作権契約、複製、元のソースのリンクと、この文を添付してください。
アイデア:
すなわち、N(N-2)!N階乗= N(N-1)... * 1 2は、限り、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");
}
結果: