1. ホーム
  2. C

C: 1を求める! + 2! + 3! + ... + n! (ループ)

2022-02-20 12:37:46

問題を解く

C言語ではforループを使用し、1! + 2! + 3! + ... + n!

コードの実装

# include <stdio.h>
int main(void)
{
    int n = 0;
    int i = 0;
    int m = 1;
    int sum = 0;
    printf("Please enter the value of n:");
    scanf("%d", &n);
    for (i=1; i<=n; ++i)
    {
        m = m * i;
        sum = sum +m;
    }
    printf ("sum = %d\n", sum);
    return 0;
}

ナレッジポイント分解

このプログラムは短いですが、論理的でアルゴリズム的なので、読者は覚えておくことをお勧めします。論理的であるが故に、見ただけでは理解しにくい。自分で紙に書いて、コンピュータになったつもりで一歩一歩計算してみてください。
n=4の場合。

  1. i=1、m=1、sum=1 のとき。
  2. i=2のとき、m=1×2、sum=1+1×2。
  3. i=3のとき、m=1×2×3、sum=1+1×2+1×2×3。
  4. i=4のとき、m=1×2×3×4、sum=1+1×2+1×2×3+1×2×3×4。

このパターンを見てください。mの値はずっと掛け算で、iを掛ける前のmの値は(i-1)の階乗、iを掛けた後のmの値はiの階乗です。ですから、iがループする数だけ、m*iはすぐにその数の階乗を計算し、sumに足し算するのです。