プログラミング教養【再帰関数編】

プログラミング学習で”再帰関数”という言葉が出てきました。
正直文字で読んでも全く理解できない。
ので、この”再帰関数”自分なりにまとめました。
間違っているところもあるかと思いますが、自分用のメモのようなものなので、ご了承ください。

再帰関数とは?

同じ処理を繰り返す大きな問題を小さな問題に分割するよ。
小さな問題(自分自身)を繰り返し呼び出す処理(関数)だよ。

<具体例>
n 以下の正の整数の総和 (1+2+⋯+n1+2+⋯+n) を計算

function saiki_kansuu(n) {
    if(n == 0) {
        return 0;
    }else {
        return n + saiki_kansuu(n-1);
    }
}

自分自身を関数の中で呼び出してるからこれは再帰関数(でも終了条件がないから無限ループになる)
重要なのは再帰関数を使うときは終了条件を決めること!!!

function saiki_kansuu(n) {
    if(n == 0) {
        return 0;
    }else {
        return n + saiki_kansuu(n-1);
    }
}

function main() {
    for ($i = 0; $i <= 10; $i++) {
        cout << i << " までの和 = " << func(i) << endl;
        echo $i . " までの和は " . saiki_kansuu(i) . "<br>";
    }
}

main関数で再帰関数を使用し、”n 以下の正の整数の総和 (1+2+⋯+n1+2+⋯+n) を計算”しています。
結果は以下になります。

0 までの和 0
1 までの和 1
2 までの和 3
3 までの和 6
4 までの和 10
5 までの和 15
6 までの和 21
7 までの和 28
8 までの和 36
9 までの和 45
10 までの和 55

こんな感じではないでしょうか。
つまり再帰関数は自分自身を使用する関数で、終了条件がないと無限ループになるのでまずい。というイメージだと思います。
再帰関数に関してはネット上に情報がいくつもあるので、様々な例を見て理解を深めていこうと思います。

未経験からの学習では新しい概念は全て理解しようとせず、その概念の要点を自分なりに解釈し、落とし込むことが大切だと思います。

頑張りましょう。