再帰とは
あるメソッド内で自身のメソッドを呼び出すことを再帰という。
例:1から10までを足した値を再帰を使って出力する処理
public class java01 {
public static void main(String[] args) {
System.out.println(func(10));
}
static int func(int n) {
if (n == 0) {
return 0;
}
else {
return n + func(n - 1);
}
}
}
処理の流れ
1.メインメソッドでfuncメソッドを呼び出す
2.メインメソッドから受け取った値をifで条件分岐
3.受け取った値は10なのでelseに入り、funcメソッドを10回呼び出す
10 + func(10-1), 9 + func(9-1), 8 + func(8-1), 7 + func(7-1), 6 + func(6-1),
5 + func(5-1), 4 + func(4-1), 3 + func(3-1), 2 + func(2-1), 1 + func(1-1)
4.nが0になったタイミングで戻り値として0をfunc(1-1)に返す
5.以降は順番に足し算を行う
1 + 0 = 1, 2 + 1 = 3, 3 + 3 = 6, 4 + 6 = 10, 5 + 10 = 15, 6 + 15 = 21, 7 + 21 = 28,
8 + 28 = 36, 9 + 36 = 45, 10 + 45 = 55,
6.nをメインメソッドに渡して処理終了
感想
仕組み自体はそこまで難しい印象は受けなかったがシンプルこれどこで使うん?