それぞれ、非再帰およびnの再帰的な階乗を達成するために - (C言語)

免責事項:この記事はブロガーオリジナル記事です、続くBY-SAのCC 4.0を著作権契約、複製、元のソースのリンクと、この文を添付してください。
このリンク: https://blog.csdn.net/zz070/article/details/102750971

アイデア:

すなわち、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");
}

結果:

ここに画像を挿入説明

おすすめ

転載: blog.csdn.net/zz070/article/details/102750971
おすすめ