【基本情報】コード掲載!科目B問7「再帰関数プログラム」について解説します

20231108_sample7 資格試験

基本情報の午後試験はプログラム問題です.

科目B問題を解けるようになるにはプログラムを元に自分でコードを書いてみるのが1番良いでしょう.

今回は科目B問7「再帰関数プログラム」の解説とそのコードを紹介します.
プログラムを元にPythonで書き直しました.

Pythonで書いてみたので是非手元で実行してみてください

サンプル問題 科目B 問7「再帰関数プログラム」

問題文は以下のとおりです.
再帰関数を使った問題ですね.

サンプル問題[科目B]問7 再帰関数のプログラム

Pythonでプログラムを書く

プログラムをPythonで書き換えました.

def factorial(n: int):
    if (n == 0):
        return 1
    
    return n * factorial(n - 1)

print(factorial(4))
プログラムの実行結果|クリックして拡大できます

factorial関数は再帰関数です.

処理の中で自身(factorial関数)を呼んでいますよね.このように定義した関数の中で自身の関数を呼ぶことを再帰関数と言います

プログラムの実行結果を見ると,引数に4を渡すと24が返ってきました.

処理過程を辿ってみましょう.

  • n=4のとき
    • 戻り値:4 * factrial(4-1) # factrial(n=3)が実行される
  • n=3のとき
    • 戻り値:3 * factrial(3-1) # factrial(n=2)が実行される
  • n=2のとき
    • 戻り値:2 * factrial(2-1) # factrial(n=1)が実行される
  • n=1のとき
    • 戻り値:1 * factrial(1-1) # factrial(n=0)が実行される
  • n=0のとき
    • 戻り値:1 # 処理終了

よって戻り値は次のように計算されます.

4 * 3 * 2 * 1 * 1 = 24

プログラムの実行結果が検算結果とも一致しましたね.
処理内容も正しそうです.

まとめ

今回は科目B問7「再帰関数プログラム」について紹介しました.

一般的な関数は定義元と使用先が分かれています.

一方で再帰関数は定義元と使用先が一緒です.
1つの関数の中で処理がぐるぐると回っているイメージでしょう.

最初は違和感ありますがすぐに慣れます.
もし混乱しそうなときは処理過程を書き出すことをおすすめします.