Essential ActionScript3.0 読書メモ 第41回 再帰関数

再帰関数(recursive function)とは、自分自身を呼ぶ関数である。

function trouble () {
trouble();
}

↑のように、関数内で自分自身を呼ぶことで繰り返し処理を行う。再帰関数について注意が必要なのは無限再帰である。trouble()は再帰の終了条件が設定されていないため、無限に自分自身を呼び出し続ける。再帰関数を書く際には、再帰の終了条件をあらかじめ設定しておくべきである。

再帰の古典的な例は、階乗計算である。

function factorial (n) {
if (n < 0) {
return; // 無効な入力なので終了
} else if (n <= 1) {
return 1;
} else {
return n * factorial(n-1);
}
}
factorial(3) // 6
factrorial(5) // 120

もっとも、同じ処理はループを使うことでも実現できる。

function factorial (n) {
if (n <0) {
return;
} else {
var result = 1;
for (var i = 1; i <= n; i++) {
result = result * i;
}
return result;
}

再帰は複雑な問題を簡単な処理で解くことができる。しかし、関数を繰り返し呼び出すことは、ループに比べると処理の効率が悪いことが多い。また、Flashの実行環境は再帰の最大回数に制限を設けており、初期値では1000回までとなっている。

今日の進捗:2526→2553/20168(kindle用書籍フォーマット、mobi形式でのページ数)

コメントを残す

コメントを残す