新らしくなった基本情報 科目 B 20問バージョン アルゴリズムとプログラミング サンプル問題7をJavaにしてみました
2023 年 4 月からIPA (独立行政法人情報処理推進機構)の基本情報技術者試験の制度が変更されました。
ここでは、「基本情報技術者試験 科目 B のサンプル問題20問バージョン」の中から、アルゴリズムとプログラミングの問題を取り上げ、Javaのソースコードを示します。
新人エンジニア研修に参加されている皆様の参考になれば幸いです。
【Javaプログラム】
public class Q7 {
//本問で問われている関数
static int factorial(int n) {
if (n == 0) {
return 1;
}
return n * factorial(n - 1);
}
public static void main(String[] args) {
int ans = factorial(10);
System.out.println(ans);
}
}
【結果】
3628800 |
【プログラムの解説】
このプログラムは、与えられた整数n
の階乗(n!)を再帰的に計算するプログラムです。階乗とは、1からその数までのすべての整数の積です。
例えば、5の階乗は 5! = 5 × 4 × 3 × 2 × 1 = 120 となります。
プログラムは以下のように構成されています。
- factorialメソッド: 引数で受け取った整数
n
の階乗を再帰的に計算するメソッドです。 - mainメソッド: プログラムのエントリーポイントです。ここからプログラムが実行されます。
factorialメソッドは再帰的に実装されています。
つまり、関数の中で自分自身を呼び出しています。
再帰の基本ケースはn == 0
です。この場合、階乗の定義により1
を返します。
それ以外の場合(n > 0
)、n * factorial(n - 1)
を返します。
ここでfactorial(n - 1)
は、n - 1
の階乗を計算する再帰呼び出しです。
mainメソッドでは、まず整数10
を引数としてfactorial
メソッドを呼び出し、10
の階乗を計算します。
計算結果は変数ans
に格納されます。
そして、System.out.println(ans)
を使って結果をコンソールに出力します。