はじめに
このページは大学のJavaの授業の予習の一環で書いている。
直感的な理解をメモしているだけなので、厳密な内容は避ける。
第2回は再帰である。
再帰とは
再帰とは、ある関数が関数内で自分自身を呼び出すこと。
より一般的には(プログラミングの文脈でない場合)、ある言葉の定義の中にその言葉自身が登場することである。
再帰を用いて、ソースコードを簡潔にできる場合がある。
再帰の解説
以下のコードは、階乗(factorial)の表示のメソッドと、階乗の計算のメソッドが含まれたコードである。
public class Recursion { public static void main(String[] args) { int number = 5; long factorial = Factorial(number); System.out.println("The factorial of " + number + " is " + factorial); } public static long Factorial(int n) { // Base case: if n is 0 or 1, the factorial is 1 if (n == 0 || n == 1) { return 1; } // Recursive case: n! = n * (n-1)! else { return n * Factorial(n - 1); } } }
最初にクラスを作成、そのクラス内でメソッドを作成している。
2番目のメソッド(階乗を計算するメソッド)では条件分岐で
Base Case: 再帰の終了(階乗だから0と1は1を返して終了)
Recursive Case: 再帰の実行
の2つのパートに分かれている。
疑問点
「再帰とは関係ないけど、mainメソッドって特別な意味がありそう。」
mainメソッドは、プログラムの起動点(program entry point)になる。mainメソッドの特徴は、
- プログラムの実行はmainメソッドから開始される
- mainメソッドはクラス内の他のメソッドより先に実行される
- mainメソッドがないとプログラムを起動できない
- mainメソッドの記述形式は固定されている(public static void main(String[] args))
また、mainメソッドを持つクラスの役割として、
- 起動時の設定や前処理を行う
- 他のクラスのインスタンスを生成する
- 画面表示やハードウェアとのやり取りを初期化する
- アプリケーション終了時の後処理を実装する
が挙げられる。