見出し画像

基本情報技術者試験〔科目B〕演習 2022年サンプル問題 問7(再帰)

問7(再帰)
 次のプログラム中の□に入れる正しい答えを、解答群の中から選べ。
 関数factorialは非負の整数nを引数にとり、その階乗を返す関数である。非負の整数nの階乗はnが0のときに1になり、それ以外の場合は1からnまでの整数を全て掛け合わせた数となる。

〔プログラム〕
1: 〇整数型: factorial (整数型:n)
2:  if (n = 0)
3:  return 1
4:  endif
5:  return □

解答:n × factorial (n – 1)

解説
・再帰関数では、関数が自分自身を呼び出すことで計算を進める。
・この場合、factorial(n) が自分自身で factorial(n-1) を呼び出し、その結果に  n を掛け合わせる。
・基底条件(n = 0)があるため、無限ループにはならない。

・Java でコーディング
 public class Main {
// 階乗を計算する再帰関数
public static int factorial(int n) {
if (n == 0) { // 基底条件
return 1;
}
return n * factorial(n - 1); // 再帰的計算
}
public static void main(String[] args) {
int number = 5; // 計算したい数
System.out.println("Factorial of " + number + " is: " + factorial(number));
}
}
出力結果
Factorial of 5 is: 120
・Python でコーディング
def factorial(n):
if n == 0: # 基底条件
return 1
return n * factorial(n - 1) # 再帰的計算
# 実行例
number = 5 # 計算したい数
print(f"Factorial of {number} is: {factorial(number)}")
出力結果
Factorial of 5 is: 120

補足
 階乗(factorial) は、自然数 n に対して、その数を含むすべての正の整数を掛け合わせた結果を表す数学的な操作である。記号としては n! と書く。
「階乗は、n×(n−1) の階乗 (!)」というのは、階乗が再帰的に定義されることを表す。
 再帰的定義とは、「大きな問題を小さな問題に分けて、その小さな問題を同じ方法で解く」考え方である。
 階乗の具体的な定義は次のようになる:

  • 基本ケース(終わりの条件):
    0! =1 (これはルールとして決まっている)

  • 再帰ケース(自分自身を使って計算する):
    n!=n×(n−1)!
    つまり、n! は n と (n−1) の階乗を掛け合わせたものである。

計算の具体例
5!=5×4!
4!=4×3!
3!=3×2
2!=2×1!
1!=1×0!
0!=10! = 10!=1 (基本ケースなので終了)

以上。

いいなと思ったら応援しよう!