C言語でnの階乗を計算する方法

藏色散人
リリース: 2023-01-04 15:19:32
オリジナル
22862 人が閲覧しました

n の階乗を計算する C 言語の方法: 1. for ループを通じて階乗を計算します。「for (i = 1; i

C言語でnの階乗を計算する方法

このチュートリアルの動作環境: Windows 7 システム、c99 バージョン、Dell G3 コンピューター。

C 言語で n の階乗を計算するにはどうすればよいですか?

# C 言語で n の階乗を求めます:

About n の階乗問題を見つけるには、まず問題を見て、それを使って突破ポイントを見つけてみましょう。

1. 問題

問題の説明

整数 n が与えられた場合、その階乗 0≤n≤ 12# を求めます

##Input

数値を入力 n

Output

n 階乗を表す数値を出力

#サンプル入力

5

サンプル出力

120

2. 分析

階乗を探しているので、突破ポイントは明らかです。

突破ポイントは

:

factorial 階乗の概念と背景:

1️⃣概念:

正の整数の階乗 (階乗) は、すべての積です。この数値以下の正の整数、0 の階乗は 1 です。自然数nの階乗はn!と書きます。

2️⃣背景:

1808 年、クリスチャン クランプ (1760~1826) がこの表記法を導入しました。

3️⃣ 階乗の計算方法:

1 以上の任意の自然数 n 階乗表現方法: n!= 1×2 ×3×…×(n-1)×n または n!=n×(n-1)!

注: 0 の階乗は 1、つまり 0! =1。

1! = 1

2! = 2 * 1 = 2

3! = 3 * 2 * 1 = 6


n! = n * (n-1) *… * 2 * 1

これを理解したら、コードで実装してみて、次のコードを確認してください。

3.

を解く C言語で実装されるnの階乗ですが、現時点の入門段階では主に以下の2通りの書き方があります。

最初のタイプ: ループ

①for ループ
#include<stdio.h>int main(){
	int n;
	scanf("%d", &n);
	int fact = 1;
	int i;
	for (i = 1; i <= n; i++)
	{
		fact *= i;
	}
	printf("%d\n", fact);
	return 0;}
ログイン後にコピー
テスト サンプル: 5

1 * 2 * 3 * 4 * 5 = 120

5120--------------------------------Process exited after 1.475 seconds with return value 0请按任意键继续. . .
ログイン後にコピー

②while ループ

#include<stdio.h>int main(){
	int n;
	scanf("%d", &n);
	int fact = 1;
	int i = 1;
	while (i <= n)
	{
		fact *= i;
		i++;
	}
	printf("%d\n", fact);
	return 0;}
ログイン後にコピー
テスト例: 6

1 * 2 * 3 * 4 * 5 * 6 = 720

6720--------------------------------Process exited after 1.549 seconds with return value 0请按任意键继续. . .
ログイン後にコピー

2 番目のタイプ: 再帰 (関数自体を呼び出す)

1️⃣メソッドの書き方 1
#include <stdio.h>int Fact(int n);int main() //主函数{
    int n, cnt;
    scanf("%d", &n);
    cnt = Fact(n);
    printf("%d\n", cnt);
    return 0;}
    int Fact(int n)    //递归函数 
    {
    int res = n;
    if (n > 1)
        res = res * Fact(n - 1);
    return res;}
ログイン後にコピー
テスト サンプル: 7

7 * 6 * 5 * 4 * 3 * 2 * 1 = 1 * 2 * 3 * 4 * 5 * 6 * 7

= 5040

75040--------------------------------Process exited after 2.563 seconds with return value 0请按任意键继续. . .
ログイン後にコピー
もちろんできますこのように書くこともできます:



2️⃣書き方2

#include <stdio.h>int Fact(int n) //递归函数 {
    int res = n;
    if (n > 1)
        res = res * Fact(n - 1);
    return res;}int main() //主函数 {
    int n, cnt;
    scanf("%d", &n);
    cnt = Fact(n);
    printf("%d\n", cnt);
    return 0;}
ログイン後にコピー
テストサンプル: 6

6 * 5 * 4 * 3 * 2 * 1 = 1 * 2 * 3 * 4 * 5 * 6

= 720

6720--------------------------------Process exited after 1.829 seconds with return value 0请按任意键继续. . .
ログイン後にコピー
[関連する推奨事項:

C 言語ビデオ チュートリアル
]

以上がC言語でnの階乗を計算する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート