- 締切済み
「再帰」にはプログラマにとってそんな魅力あるもの?
「日経BPパソコンベストムック 矢沢久雄セレクション アルゴリズム&デザインパターン」のP10において >「再帰」にはプログラマを夢中にさせる魅力がある と書かれているんですが、これのどこが、とりこになる程、魅力あるんですか? こんなものに魅力を感じるのはこの本を執筆した著者だけだと思いますが、どうなんでしょうか? プログラマーの方、回答のほうお願いします。
- みんなの回答 (6)
- 専門家の回答
みんなの回答
- SPROCKETER
- ベストアンサー率26% (2127/7994)
たとえば、1+2+3+4+5+6+7+8+9+・・・・と続く計算をおこなう場合を考えてみますよね。 計算結果を順次に残して置いて、計算終了後に、1、3、6、10、15・・・・という具合に画面上に数字を並べて出力するのだとします。これを通常の方法で計算するとすれば、配列を作って置いて、それに数字を順番に入れて行かなければなりませんし、配列の大きさは計算する数字の上限値に合わせて変えなければなりません。 ところが、スタック演算を使うと、非常に簡単な方法で解決します。最初に演算レジスタAXに1を入れますよね。これをPUSH AXしてから、AXをインクリメント(+1)します。次にスタックに入っている値(1)と加算して、再びPUSH AXします。すると、1、3という値がスタックに積みあがりますよね。後は、これを繰り返していくだけで、5000回でも、1万回でも計算が続けられて、配列を作る必要も無いのです。計算が終わったら、スタックの値を順にPOPして画面出力すれば良いだけです。(逆順出力) 同じように非常に複雑な演算でも、同じ方法でスタック演算出来ます。計算だけではなくて、サブルーチンアドレスをスタックに積み上げて置いて、POPしながらサブルーチンコールを繰り返していくリカーシブプログラムも作れます。再起手続きはプログラムを作ってみると面白いですよ。 実際に作ってみないとわからないでしょうが、円周率計算や平方根計算などで小数点以下1万桁とか、そういう計算をおこなうのにも使えます。
- t_ohta
- ベストアンサー率38% (5243/13715)
再帰処理でキレイにプログラムが書けるよう設計できると嬉しいですね。 単に処理を繰り返すのではなく、数学的に処理できてるって事なので再帰パターンにできると何故か嬉しいです。
- double_triode
- ベストアンサー率26% (520/1997)
私は職業プログラマではありませんが,プログラミングはします(いまはボケたのでもうしない)。「いかにもコンピュータ・プログラムらしい技法」だとは思いますが,条件分岐やループにくらべて魅了的かはわかりません。 下手くそのレベルでいえば,バグがあるとリターンせずに永久に自分を呼び出して終わらなくなる(笑)。メモリ・スタックも食いつぶして暴走しかねない,「危険な荒技」として嫌いですね。
こういうのを上手に書けるとカッコいいとは思います 保守性との兼ね合いではありますが、この意見には概ね同意です
- ミッタン(@michiyo19750208)
- ベストアンサー率15% (3892/25656)
プログラマーではありませんが、一部のコアな方にはハマるんじゃないですか?
- maiko04
- ベストアンサー率17% (345/1956)
一部の機能が「再帰」を使うと簡単に書けるだけです。 でも、プログラムは同じところを通過しますが、 データ的には再帰回数分だけメモリー消費しますので同じです。