【C言語】for文を使った階乗の計算
はじめに | for文の基本構文 | 階乗の計算例 | 計算の最適化 | まとめ
はじめに
階乗(factorial)は、自然数nに対して、nから1までの全ての整数を掛け合わせた値です。階乗は、数学やコンピュータサイエンスの多くの分野で使用されます。例えば、確率論、統計学、組み合わせ論などで重要な役割を果たします。
C言語では、for文を使って階乗を簡単に計算できます。本記事では、for文を用いた階乗計算の方法を解説し、いくつかの例を示します。
for文の基本構文
C言語におけるfor文は、繰り返し処理を行うための制御構文です。基本的な構文は次のようになります。
for (初期化; 条件式; 更新式) { // 繰り返し実行する処理 }
for文は、初期化で変数の初期設定を行い、条件式が真である間繰り返し処理を実行します。繰り返し処理が終了した後、更新式が実行され、次の繰り返しに進みます。
階乗計算において、初期化部分で計算の結果を保存する変数を定義し、条件式で繰り返す範囲を指定し、更新式で掛け算を行います。
階乗の計算例
次に、for文を使って階乗を計算するC言語のコードを紹介します。
#includeint main() { int n, factorial = 1; // ユーザーから入力を受け取る printf("階乗を計算したい数を入力してください: "); scanf("%d", &n); // for文で階乗を計算 for (int i = 1; i <= n; i++) { factorial *= i; } // 結果を表示 printf("%d の階乗は %d です。\n", n, factorial); return 0; }
このプログラムでは、ユーザーから入力された整数nに対して、1からnまでの整数を順に掛け算していきます。for文内で、変数factorial
を更新して階乗を計算しています。
例えば、ユーザーが5を入力した場合、計算は次のようになります:
- 1 × 2 = 2
- 2 × 3 = 6
- 6 × 4 = 24
- 24 × 5 = 120
最終的に、5の階乗は120になります。
計算の最適化
上記のコードでは、階乗計算をfor文で直接行っていますが、計算効率を改善する方法もあります。
1つの方法として、階乗の計算結果を再利用することが挙げられます。例えば、ユーザーが複数の階乗を計算する場合、結果を記憶しておけば、同じ計算を繰り返す必要がなくなります。
以下に、計算結果を保存して再利用する例を示します。
#includeint factorial(int n) { int result = 1; for (int i = 1; i <= n; i++) { result *= i; } return result; } int main() { int n1 = 5, n2 = 6; printf("%d の階乗は %d です。\n", n1, factorial(n1)); printf("%d の階乗は %d です。\n", n2, factorial(n2)); return 0; }
このように、factorial
関数を使うことで、同じ計算を何度も繰り返さずに済みます。
まとめ
本記事では、C言語におけるfor文を使用して階乗を計算する方法について解説しました。階乗計算は、数学的な計算であり、コンピュータサイエンスでもよく使用されます。for文を使うことで、簡潔に階乗を求めることができます。
また、計算結果を再利用する方法や関数化する方法についても触れました。これらを応用することで、効率的に階乗計算を行うことができます。