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

C#で階乗を計算する3つの方法【forループ・whileループ・再帰】

C#で階乗(Factorial)を計算するには、主に「forループ」「whileループ」「再帰呼び出し」の3つの方法があります。

階乗とは、ある正の整数nに対して「n × (n-1) × (n-2) × … × 1」を計算した値のことです。例えば5の階乗は「5! = 5 × 4 × 3 × 2 × 1 = 120」となります。

この記事では、それぞれの方法についてサンプルコードと実行結果を交えて詳しく解説します。

方法1:forループで階乗を計算する

最も基本的な方法は、forループを使って数値を1つずつ減らしながら掛け合わせていく手法です。ループ処理に慣れていない方でも理解しやすいのが特徴です。

サンプルコード

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace factorial {
   class Test {
      static void Main(string[] args) {
         int i, res;
         int value = 5;
         res = value;
         for (i = value - 1; i >= 1; i--) {
            res = res * i;
         }
         Console.WriteLine("\nFactorial of "+value+" = "+res);
         Console.ReadLine();
      }
   }
}

このコードでは、変数valueに初期値5を設定し、その値から順にデクリメントしながらresへ掛け合わせていくことで階乗を求めています。

実行結果

Factorial of 5 = 120

方法2:whileループで階乗を計算する

次に、whileループを使った方法です。条件式「n != 1」がtrueである限り処理を繰り返し、各クラスのメソッドとして階乗計算を実装しています。

サンプルコード

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();
      }
   }
}

displayメソッドは引数で受け取った整数nに対して、whileループ内でresにnを掛けながらnを1ずつ減らしていき、nが1になった時点で結果を返します。

実行結果

Value is : 120

方法3:再帰呼び出しで階乗を計算する

3つ目の方法は、メソッドが自分自身を呼び出す「再帰(Recursion)」を使うアプローチです。コードがシンプルになり数学的な定義に近い形で記述できるのが特徴ですが、大きな数値を扱う場合はスタックオーバーフローに注意が必要です。

サンプルコード

using System;
namespace MyApplication {
   class Factorial {
      public int display(int n) {
         if (n == 1)
            return 1;
         else
            return n * display(n - 1);
      }
      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();
      }
   }
}

このメソッドでは、nが1の場合に1を返すことを終了条件(ベースケース)とし、それ以外の場合は「n × display(n - 1)」として自分自身を呼び出します。これにより、5 → 4 → 3 → 2 → 1と計算が進み、最終的に120という結果が得られます。

実行結果

Value is : 120

まとめ

C#で階乗を計算する3つの方法を紹介しました。

  • forループ:最も基本的で直感的な書き方。初心者におすすめ。
  • whileループ:繰り返し回数が動的な場合に柔軟に対応できる。
  • 再帰呼び出し:コードが簡潔になる一方、深い再帰には注意が必要。

どの方法でも同じ結果が得られますが、用途や可読性、性能要件に応じて適切な手法を選択することが大切です。

  1. Windows 10でプロキシ設定を無効にする3つの方法【初心者向け完全ガイド】

    コンピューターネットワークにおいて、プロキシサーバー(「プロキシ」または「アプリケーションレベルゲートウェイ」とも呼ばれます)は、ユーザーとインターネットの間の仲介役として機能します。プロキシサーバーは通信のパフォーマンスとセキュリティの向上に役立ちますが、マルウェア感染や誤ったソフトウェアのインストールによってプロキシ設定が勝手に変更され、インターネットへのアクセスが困難になることがあります。また、不正なプロキシ設定は、Webページがまったく読み込めない、表示が極端に遅いといった接続トラブルの原因にもなります。こうした問題を回避・解決するには、Windows 10でプロキシ設定を無効にするの

  2. Windows 10でゲストアカウントを有効化する方法を徹底解説【Homeエディション対応】

    Windows 10のパソコンやノートPCでゲストアカウントを有効にして、訪問者にアプリへの制限付きでログインさせたいとお考えですか?この記事では、Windows 10 Homeエディションを含む各種エディションでゲストアカウントを有効にする複数の方法をご紹介します。まずは、ゲストアカウントとは何か、どのように動作するのかを理解しておきましょう。 ゲストアカウントでログインしたユーザーは、他のアカウントのファイルにアクセスできず、システム設定を変更することもできません。例えば、新しいユーザーアカウントの作成や、アカウントへのパスワード設定なども行えません。Windows 10では、Micros