再帰処理なんて
はてブからこちらのエントリを見た。
ループを使わずに配列を逆にするヤツ : D-7 <altijd in beweging>
こういうのとか、あの有名なバベルの塔(追記:ハノイの塔の誤り)のやつとか、フィボナッチ数列のやつとか、基礎の基礎みたいな階乗のやつとか。
本当に再帰処理というのは見るたびにすごいなーと思ってしまう。
プログラミングをやり始めてもうすぐ二年くらいだけど、やっぱり自分ではなかなかこういう発想に辿り着かない。
自分自身を呼び出すって何なの?、みたいな感じになってしまう。
いや、理屈ではちゃんとわかってるんだけど、うーん、なんていうか、自然界にない動きというか。
なので、「配列内要素逆転」は自分ならこれしかできない。
(上のエントリが「ループを使わず」に主眼を置いているのは承知しています)
sub rev { if (@_) { my @r; while (my $elm = shift @_) { unshift @r, $elm; } return @r; } }
そもそもの今のコンピュータからしてノイマン型だし、ちゃんとわかっていないといけない概念ではあるのだけれど、ほんと、難しく感じてしまうから困ったものだ。