C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#で階乗を計算する方法【whileループによる実装例を解説】

階乗とは

階乗(ファクトリアル)とは、ある正の整数から1までのすべての整数を掛け合わせた値のことです。「n!」のように表記され、例えば5の階乗(5!)は「5 × 4 × 3 × 2 × 1 = 120」となります。

C#で階乗を計算する方法

C#で階乗を計算するには、whileループを使用して、数値が1と等しくなくなるまで繰り返し掛け算を行うのが基本の考え方です。

ここで、変数 n は階乗を求めたい対象の値です。

int res = 1;
while (n != 1) {
    res = res * n;
    n = n - 1;
}

処理の流れ

上記のコードを使って、実際に5!(5の階乗)を計算してみましょう。初期状態は n = 5 です。

ループ1回目:

n=5
res = res * n → res = 1 * 5 = 5

ループ2回目:

n=4
res = res * n → res = 5 * 4 = 20

ループ3回目:

n=3
res = res * n → res = 20 * 3 = 60

この後も同様に n=2 のときに res = 60 * 2 = 120 となり、n が1になった時点でループが終了します。

完全なサンプルプログラム

以下に、上記のロジックを組み込んだ完全なC#プログラムを示します。Factorial クラスの display メソッドが階乗計算を行い、その結果を返します。

using System;
namespace MyApplication {
    class Factorial {
        public int display(int n) {
            int res = 1;
            while (n != 1) {
                res = res * n;
                n = n - 1;
            }
            return res;
        }
        static void Main(string[] args) {
            int value = 5;
            int ret;
            Factorial fact = new Factorial();
            ret = fact.display(value);
            Console.WriteLine("Value is : {0}", ret);
            Console.ReadLine();
        }
    }
}

実行結果

Value is : 120

補足:注意点について

数学では「0! = 1」と定義されていますが、上記のコードでは n に0や負の数が渡された場合、意図した動作になりません。実用的なプログラムにする場合は、メソッドの先頭で入力値の妥当性チェック(if (n <= 0) などの条件分岐)を追加しておくと、より堅牢な実装になります。

  1. Pythonでアームストロング数(Armstrong Number)を判定する方法をわかりやすく解説

    アームストロング数とは?アームストロング数(Armstrong Number)とは、k桁の数 N の各桁の数字を k 乗した値の合計が、元の数 N と一致する数のことです。例えば、153 は 3桁の数であり、各桁の 3乗の和を計算すると以下のようになります。1³ + 5³ + 3³ = 1 + 125 + 27 = 153合計が元の数 153 と一致するため、153 はアームストロング数です。この記事では、与えられた数がアームストロング数であれば true を、そうでなければ false を返すプログラムを Python で実装します。解法のアルゴリズムアームストロング数の判定は、次の手順で行

  2. Pythonで階乗を計算する3つの方法|forループ・再帰・math.factorial()の使い方

    階乗(factorial)の計算は、データ分析をはじめとする数学的な処理において、Pythonでよく求められる操作の一つです。階乗とは、正の整数 n に対して、1から n までのすべての整数を掛け合わせた値のことです(例:5! = 1 × 2 × 3 × 4 × 5 = 120)。この記事では、Pythonで階乗を求める3つの方法を、コード例と実行結果とともにわかりやすく解説します。方法1:forループを使うforループで1から目的の数値まで順番に処理し、各ステップで掛け算を繰り返していく方法です。以下のプログラムでは、ユーザーに数値の入力を促し、ループ処理の前にint()で入力値を整数に変換