再帰を使った階乗の求め方

CBeginner
オンラインで実践に進む

はじめに

この実験では、C プログラミング言語を使って再帰を使って与えられた数の階乗を求める方法を学びます。階乗は「!」で表され、与えられた数以下のすべての正の整数の積です。たとえば、5 の階乗は 5 x 4 x 3 x 2 x 1 = 120 です。

main() 関数を初期化する

main 関数では、入力値と計算された階乗を格納する変数を宣言します。その後、ユーザーに階乗を求める値を入力するように促します。

#include <stdio.h>

int main()
{
    int num, factorial;
    printf("Enter a number: ");
    scanf("%d", &num);
}

再帰を使って階乗を計算する関数を作成する

ここでは、整数型のパラメータ num を持ち、整数値を返す factorial という名前の関数を作成します。この関数では、再帰を使って与えられた数の階乗を計算します。与えられた数の値が 1 または 0 に等しい場合、それらの値の階乗は 1 なので 1 を返します。与えられた数が 1 より大きい場合、再帰を使ってその階乗を計算して値を返します。

int factorial(int num)
{
    if(num == 0 || num == 1)
    {
        return 1;
    }
    else
    {
        return num * factorial(num-1);
    }
}

main 関数内で階乗関数を呼び出し、結果を表示する

ここでは、'main' 関数内で 'factorial' 関数を呼び出し、入力値をパラメータとして渡します。その後、返された値を 'factorial' 変数に格納し、結果をコンソールに表示します。

#include <stdio.h>

int factorial(int num);

int main()
{
    int num, factorial;
    printf("Enter a number: ");
    scanf("%d", &num);

    factorial = fact(num);
    printf("Factorial of %d is %d", num, factorial);

    return 0;
}

ただし、コード中の fact(num)factorial(num) の誤りであることに注意してください。正しいコードは以下のようになります。

#include <stdio.h>

int factorial(int num);

int main()
{
    int num, factorial;
    printf("Enter a number: ");
    scanf("%d", &num);

    factorial = factorial(num);
    printf("Factorial of %d is %d", num, factorial);

    return 0;
}

プログラムをコンパイルして実行する

これでプログラムが書かれたので、ファイルを '~/project/' ディレクトリに 'main.c' として保存します。ターミナルを開き、'main.c' ファイルが含まれるディレクトリに移動します。プログラムをコンパイルするには、次のコマンドを使用します。

gcc main.c -o main

プログラムが正常にコンパイルされたら、次のコマンドを使用してプログラムを実行します。

./main

「main.c」の完全なコード

必要に応じて、このコードを参考にしてください。

#include <stdio.h>

int factorial(int num);

int main()
{
    int num, factorial;
    printf("Enter a number: ");
    scanf("%d", &num);

    factorial = factorial(num);
    printf("Factorial of %d is %d", num, factorial);

    return 0;
}

int factorial(int num)
{
    if(num == 0 || num == 1)
    {
        return 1;
    }
    else
    {
        return num * factorial(num-1);
    }
}

まとめ

この実験では、C 言語を使って再帰を用いて与えられた数の階乗を計算する方法を学びました。再帰を使って階乗を求める関数と、数値を入力して階乗関数を呼び出す main 関数を作成しました。